2010-06-20 3 views
1

Что вы называете конструкцией, где конструктор объекта отвечает за все/любые последующие действия. Использование этого класса подразумевает просто создание экземпляра, а затем все это - огонь и-забыть.Как вы называете этот шаблон?

Глупый пример:

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); 
    } 
} 

... Использование класса Order:

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

    } 

Edit:

Ну, разница между использованием этого и простой статический метод заключается в том, что вновь созданный объект Order будет использоваться во многих разных местах, а не в функции/потоке/объекте, который его создал.

Я просто создаю объект заказа, он регистрируется с помощью OrderManager, тогда OrderManager закроет заказ позже. Я не бросаю объект прочь, он будет продолжать существовать в приложении.

+0

Я не вижу, как параметр 'type' используется в ctor. Я не знаю названия такого шаблона, но мне не нравится скрывать бизнес-логику в конструкторе. –

ответ

2

Это выглядит более подходящим для (статического) метода, чем создание экземпляра класса, который вы тогда выбрасываете!

Я не уверен, есть ли это имя, я надеюсь, что этого не произойдет! Может быть, это хорошо известный анти-модель ...

... проверить это: http://geoffrey.vandiest.biz/post/Anti-Pattern-3-Overloaded-Constructor.aspx

3
  • "плохая идея"?
  • "Нелегитимный"?
  • "Процедурный беспорядок"?
  • «Анти-объектно-ориентированный анти-шаблон»?
+0

lol :-)), а затем второй LOL, причиной комментариев должно быть 15 символов мин. – Radu094

Смежные вопросы