Différence entre le modèle de conception structurelle et le modèle de conception comportementale? [fermé]

Je lisais sur les bases des modèles de conception et suis tombé sur les deux définitions de base des modèles structurels et du modèle comportemental qui est comme:

Modèles de conception structurelle: traitent généralement des relations entre les entités, ce qui facilite la collaboration de ces entités.

Modèles de conception comportementale: utilisés dans les communications entre entités et rendent la communication plus facile et plus flexible pour ces entités.

En le lisant, je ne peut pas faire la différence entre eux, quelqu'un peut-il me guider à quel point ils sont différents, en donnant un exemple le plus simple?

29
demandé sur Zach Smith 2012-11-20 16:08:04

4 réponses

Je ne suis pas sûr si mon explication et mon exemple couvrent vraiment les principes les plus importants

Pensez au comportement comme à des scénarios externes aux structures. Une certaine structure de données peut "être utilisée" dans plusieurs comportements / scénarios.

D'autre part, pensez à la logique liée à la structure comme étant interne à la structure. La structure est affectée par divers changements et exécute certaines actions en conséquence.

Cela étant dit, Nous pouvons illustrer avec le suivant:

Les modèles de conception de Structure définiront un blog en définissant ses composants comme des objets métier de niveau supérieur tels que Article / Image / commentaire. Les constituants sont conscients les uns des autres et comment se connecter les uns aux autres.

$image = new Image;
$image->title = 'Image title';
$image->url = 'http://example.com/file.ext';
$image->save(); // will save the image to a DB

$article->title = 'The title i have set';
/* $article->url_key = 'the_title_i_have_set'; */
// this ^^ element of logic will be done automatically by the article
$article->addImage($image); // will save the connection between the
                            // article and the image to DB

Les modèles de conception de comportement définiront un weblog par ses cas d'utilisation (scénarios) en utilisant des objets métier de niveau inférieur tels que Article/ArticleToImage/Image/ArticleToComment. Les objets métier ne sont pas conscients les uns des autres et sont "manœuvrés" dans placer par la logique du scénario.

$image = new Image;
$image->title = 'Image title';
$image->url = 'http://example.com/file.ext';
$image->save(); // will save the image to a DB

$article->title = 'The title i have set';
$article->url_key = $controller->getURlKey($article->title);
$article->save(); // saves article to DB

$article_to_image = new ArticleToImage;
$article_to_image->article = $article;
$article_to_image->image = $image;
$article_to_image->save();

TL; DR

Si les objets de stockage sont intelligents (contiennent de la logique), c'est la conception structurelle. Si les objets de stockage sont muets (ils ne peuvent stocker que des données et les transférer à la base de données), vous avez besoin d'une conception comportementale pour les gérer.

4
répondu Mihai Stancu 2012-11-20 15:26:40

La meilleure façon d'expliquer serait de prendre deux exemples de deux catégories.

Composite from Structural patterns définit une structure arborescente, donc se concentre sur la relation. Un à plusieurs et a un type de relations afin que tout et partie peuvent être traités de la même manière.

Modèle Observateur d'autre part des modèles de conception comportementale se concentrent sur la communication. Comment Pouvons-nous informer les parties intéressées des modifications apportées à l'objet. Sorte d'éditeur à l'abonné. Ne définissez pas de structure stricte, mais forces sur les méthodes de mise en œuvre, c'est-à-dire les canaux de communication.

J'espère que c'est utile.

18
répondu xelber 2012-11-20 12:27:28

Désolé que mon explication soit en C#.

L'observateur est un modèle comportemental: présente une interface, permettant à l'objet de communiquer sans aucune connaissance concrète les uns des autres. Aussi connu sous le nom de modèle de publication-Abonnement. Objet pour informer un autre objet de son état, sans la connaissance quels sont ces objets .

L'adaptateur est un modèle structurel: L'adaptateur convertit l'interface de la classe donnée en une autre classe demandée par le client. Enveloppe une classe existante avec une nouvelle interface. Impédance correspondre un ancien composant à un nouveau système. Permet aux classes de travailler ensemble lorsque cela est impossible en raison d'interfaces incompatibles.

Exemple D'Adaptateur:

interface ITarget
{
  List<string> GetProducts();
}


public class VendorAdaptee
{
   public List<string> GetListOfProducts()
   {
      List<string> products = new List<string>();
      products.Add("Gaming Consoles");
      products.Add("Television");
      products.Add("Books");
      products.Add("Musical Instruments");
      return products;
   }
}


class VendorAdapter:ITarget
{
   public List<string> GetProducts()
   {
      VendorAdaptee adaptee = new VendorAdaptee();
      return adaptee.GetListOfProducts();
   }
}


class ShoppingPortalClient
{
   static void Main(string[] args)
   {
      ITarget adapter = new  VendorAdapter();
      foreach (string product in adapter.GetProducts())
      {
        Console.WriteLine(product);
      }
      Console.ReadLine();
   }
}

Exemple D'Observateur: gestionnaire D'événements et juste des événements

using System;
namespace wildert
{
    public class Metronome
    {
        public event TickHandler Tick;
        public EventArgs e = null;
        public delegate void TickHandler(Metronome m, EventArgs e);
        public void Start()
        {
            while (true)
            {
                System.Threading.Thread.Sleep(3000);
                if (Tick != null)
                {
                    Tick(this, e);
                }
            }
        }
    }
        public class Listener
        {
            public void Subscribe(Metronome m)
            {
                m.Tick += new Metronome.TickHandler(HeardIt);
            }
            private void HeardIt(Metronome m, EventArgs e)
            {
                System.Console.WriteLine("HEARD IT");
            }

        }
    class Test
    {
        static void Main()
        {
            Metronome m = new Metronome();
            Listener l = new Listener();
            l.Subscribe(m);
            m.Start();
        }
    }
}
2
répondu externo mein 2014-10-21 09:46:13

Les modèles Structurels sont utilisés pour définir les propriétés statiques du système (voir diagramme de Classe).

Exemple : le modèle D'usine peut être utilisé pour créer des entités qui constituent votre système. Vous pouvez avoir un objet Button qui a des propriétés graphiques différentes sous Windows par rapport à OS X. Le modèle D'usine créera le Button quel que soit le système d'exploitation et l'objet créé aura les mêmes interfaces sur les deux systèmes d'exploitation exposera le même comportement malgré des propriétés différentes interne.

Schémas Comportementaux sont utilisés pour définir le comportement dynamique du système (voir Activité, Séquence etc. diagramme).

Exemple : le modèle D'adaptateur peut être utilisé lors de l'exécution pour autoriser l'interfaçage transparent de 2 entités qui ne partagent pas l'interface entre elles. Il modifie efficacement le comportement d'un objet lors de l'exécution.

1
répondu SomeWittyUsername 2012-11-20 12:27:08