设计模式之Factory

工厂模式主要是 为了建立对象而提供的接口。java

1.  以下是一个简单的工厂类app

[java:showcolumns]  view plain copy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. public class Factory{  
  2.   
  3.   public static Sample creator(int which){  
  4.   
  5.   //getClass 产生Sample 通常可以使用动态类装载装入类。  
  6.   if (which==1)  
  7.     return new SampleA();  
  8.   else if (which==2)  
  9.     return new SampleB();  
  10.   
  11.   }  
  12.   
  13. }  

 

在程序中,若是要实例化Sample时.就使用 Sample sampleA=Factory.creator(1) 就可。spa

 

2.以下是更高一点的 抽象工厂模式。 若是建立对象的方法变得复杂了,如上面的是建立一个Sample对象,.net

   这边要是还要在建立一个新的对象,就能够用这种模式了!对象

 

   这里假设:Sample有两个concrete类SampleA和SamleB,而Sample2也有两个concrete类Sample2A和SampleB2blog

   那么,咱们就将上例中Factory变成抽象类,将共同部分封装在抽象类中,不一样部分使用子类实现。接口

eg:ip

 

[java:showcolumns]  view plain copy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. public abstract class Factory{  
  2.   
  3.   public abstract Sample creator();  
  4.   
  5.   public abstract Sample2 creator(String name);   
  6.   
  7. }  
  8.   
  9. public class SimpleFactory extends Factory{  
  10.   
  11.   public Sample creator(){  
  12.     .........  
  13.     return new SampleA  
  14.   }  
  15.   
  16.   public Sample2 creator(String name){  
  17.     .........  
  18.     return new Sample2A  
  19.   }  
  20.   
  21. }  
  22.   
  23. public class BombFactory extends Factory{  
  24.   
  25.   public Sample creator(){  
  26.     ......  
  27.     return new SampleB   
  28.   }  
  29.   
  30.   public Sample2 creator(String name){  
  31.     ......  
  32.     return new Sample2B  
  33.   }  
  34.   
  35. }  
相关文章
相关标签/搜索