2010-06-20 7 views
1

Comment appelez-vous le design dans lequel le constructeur de l'objet est responsable de toutes les actions suivantes? L'utilisation de cette classe consiste simplement à créer une instance, puis tout est ignoré.Comment appelez-vous ce modèle?

Un exemple stupide:

public class Order 
{ 
    public Order(int ammount,Product type) 
    { 
     Ammount = ammount; 
     Namespace.OrderManager.RegisterNewOrder(this); 
     Namespace.WarehouseManager.Substract(this);   
     Namespace.OrderManager.Invoice(this); 
     Namespace.DeliveryManager.Deliver(this); 
     .. well, you get the point; 

    } 

    // Called back later from DeliveryManager 
    public void OrderHasBeenDelivered() 
    { 
     //save some data to the DB, or notify the UI 
    } 

    // Called back later from OrderManager 
    public void OrderHasBeenCanceled() 
    { 
     Namespace.DeliveryManager.CancelDelivery(this); 
    } 
} 

... l'utilisation de la classe de commande:

public void CreateOrder_click(object sender, EventArgs e) 
    { 
      new Order(50, CDs); 
      new Order(10, DVDs); 
      new Order(10, DVDs); 

    } 

Edit:

Eh bien, la différence entre l'utilisation et cette statique simple, méthode, est que l'objet Order nouvellement créé va être utilisé dans de nombreux endroits différents, mais pas par la fonction/thread/objet qui l'a créé.

Je crée simplement l'objet de la commande, il s'enregistre lui-même auprès de OrderManager, puis le OrderManager ferme l'ordre ultérieurement. Je ne jette pas l'objet en soi, il continuera à exister dans l'application.

+0

Je ne vois pas comment le paramètre 'type' est utilisé dans le ctor. Je ne suis pas au courant du nom d'un tel modèle, mais je n'aime pas cacher la logique métier dans un constructeur. –

Répondre

3
  • "Une mauvaise idée"?
  • "Untestable"?
  • "Mess de procédure"?
  • "L'anti-modèle orienté objet"?
+0

lol :-)) puis un second lol, car les commentaires doivent être de 15 caractères minimum – Radu094

0

Ceci n'est pas un motif.

Questions connexes