設計模式之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. }  
相關文章
相關標籤/搜索