创建模式之FactoryMethod——工厂方法模式

1、简介
      和简单工厂模式不同,核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。工厂方法模式可以允许很多具体工厂类从抽象工厂类中将创建行为继承下来,从而可以成为多个简单工厂模式的综合,进而推广了简单工厂模式。

2、使用场景及能解决的问题
      一个系统要独立于它的产品的创建、组合和表示时
      一个系统要由多个产品系列中的一个来配置时
      当你要强调一系列相关的产品对象的设计以便进行联合使用时
      当你提供一个产品类库,而只想显示它们的接口而不是实现时

3、类图

4、实例

首先看看工厂类:

 

public interface Factory {

  
public Product create();

}

 

接下来看看工厂相关的实现类:

public class ConcreteFactory1 implements Factory {

   
public Product create(){

      
return new ConcreteProduct1();

    }


}


 

public class ConcreteFactory2 implements Factory {

   
public Product create(){

      
return new ConcreteProduct2();

    }


}

 

产品类:

 

public interface Product {

  
public void getMessage();

}

 

产品相关的实现类:

 

public class ConcreteProduct1 implements Product {

   
public void getMessage(){

       System.out.print(
"this is ConcretProduct1.");

    }


}

 

 

public class ConcreteProduct2 implements Product {

   
public void getMessage(){

       System.out.print(
"this is ConcretProduct2.");

    }


}

 

最后看看客户端的相关类:

public class Client {

private static  Product product1;

   
private static  Product product2;

   
private static Factory factory2;

   
private static Factory factory1;

public static void main(String[] args){

factory1 
= new ConcreteFactory1();

       factory2 
= new ConcreteFactory2();

product1
= factory1.create();

       product1.getMessage();

    product2
= factory2.create();

       product2.getMessage();

   }


}


5、优缺点

      完全支持-原则,如果需要增加一个新的产品,需要向系统中加入一个这个产品类以及相应的工厂类,没有必要修改客户端。

 

posted on 2008-05-28 13:58 云淡风清 阅读(237) 评论(0)  编辑  收藏 所属分类: Design Patterns


只有注册用户登录后才能发表评论。


网站导航:
 
<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿(1)

随笔分类(15)

随笔档案(15)

收藏夹(1)

搜索

最新评论

阅读排行榜

评论排行榜