前往IT大V的晋级之道

YY而已,不必当真

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
简单工厂的结构
IProduct
{
   公共方法
}

SimpleFactoryBuildProduct
{
   static IProduct Create(类名)
   {
      switch(类名)
      {
         case Product1: return new Product1();
         case Product2: return new Product2();
      }
   }
}

product1 : IProduct
{}
product2 : IProduct
{}

programe
{
   Main()
   {
      Product1 p1 = SimpleFactoryBuildProduct.Create("Product1");
      Product2 p2 = SimpleFactoryBuildProduct.Create("Product2");
   }
}

工厂方法解决问题的意图如下(拙见):
工厂方法世纪上没有省略要做的工作。象所有设计模式一样,工厂方法提供一个更加抽象的视角归纳问题。最理想的应用工厂方法的场景时抽象产品具有所有产品的公共方法,在具体使用时可以用抽象产品代替所有具体产品(也就是说抽象产品具有产品的所有对外接口);这样抽象工厂提供了统一管理产品生成的场所,通过约定(要产品找工厂),为产品提供了统一生成接口。

该模式对开闭原则的实现度:
可以在不该变客户端原有系统的情况下新增一个产品,但是如果要使用新产品时出外。
如果要增加一个新的产品,需要增加该产品的实现,并在工厂方法中新增一个创建项。

posted on 2007-05-23 16:29  岩山藤  阅读(355)  评论(1编辑  收藏  举报