你怎么称呼这种模式?

时间:2010-06-20 19:27:54

标签: design-patterns

对象的构造函数负责所有/任何后续操作的设计是什么?这个类的用法只涉及创建一个实例,然后它就是一劳永逸。

一个愚蠢的例子:

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

  } 

修改:

嗯,使用它和一个简单的静态方法之间的区别在于,新创建的Order对象将在许多不同的地方使用,而不是由创建它的函数/ thread /对象使用。

我只是创建订单对象,它使用OrderManager注册自己,然后OrderManager将在稍后关闭订单。我不会将对象扔掉,它将继续存在于应用程序中。

3 个答案:

答案 0 :(得分:3)

  • “一个坏主意”?
  • “不可测”?
  • “程序混乱”?
  • “反面向对象的反模式”?

答案 1 :(得分:2)

这看起来更适合(静态)方法,而不是创建一个然后扔掉的类的实例!

我不确定这是否有名字,我希望不会!也许这是一个众所周知的反模式......

...检查一下:http://geoffrey.vandiest.biz/post/Anti-Pattern-3-Overloaded-Constructor.aspx

答案 2 :(得分:0)

这不是模式。