Factory Pattern

1、为什么应用工厂模式

 

     工厂模式包括:工厂方法和抽象工厂

 

    工厂方法:

     一般创建过程:

        A a=new A();

       B b=new B();

      利用工厂方法:第一:可以封装创建的代码,易于扩展和维护;

 

   如果利用抽象类:

    AB a=new A();

   AB b=new B();

    第二:虽然利用父类创建,但是如果子类很多,将是一场悲剧!!!

2、工厂模式应用

 

[java]   view plain copy print ?
  1. public interface IResOperatorFactory {  
  2.   
  3.  public ResOperator createResOperator();  
  4.    
  5.  public BatchResOperator createBatchResOperator();  
  6.   
  7. }  



 

[java]   view plain copy print ?
  1. public class ResOperatorFactoryFrontend implements IResOperatorFactory{  
  2.   
  3.       
  4.     private static ResOperatorFactoryFrontend instance=null;  
  5.     private ResOperatorFactoryFrontend(){  
  6.   
  7.     }  
  8.       
  9.     public void SetDefatultResModelSerivceName(String name){  
  10.         defatultServiceName=name;  
  11.     }  
  12.       
  13.     /** 
  14.      * 获取资源操作工厂实例 
  15.      */  
  16.     public static ResOperatorFactoryFrontend getInstance(){  
  17.           
  18.         if(instance==null){  
  19.             instance=new ResOperatorFactoryFrontend();  
  20.         }  
  21.         return instance;  
  22.     }  
  23.   
  24.     /** 
  25.      * 创建资源操作实例 
  26.      */  
  27.     public ResOperator createResOperator(){  
  28.   
  29.         return new RMIFrameResOperatorFrontend(defatultServiceName);  
  30.   
  31.     }  
  32.       
  33.     /** 
  34.      * 创建资源操作实例 
  35.      */  
  36.     public ResOperator createResOperator(String resModelServiceName){  
  37.   
  38.         return new RMIFrameResOperatorFrontend(resModelServiceName);  
  39.   
  40.     }  
  41.   
  42.     /** 
  43.      * 创建批量资源操作实例 
  44.      */  
  45.     public BatchResOperator createBatchResOperator() {  
  46.   
  47.         return new RMIFrameBatchResOperatorFrontend(defatultServiceName);  
  48.           
  49.     }  


 

 


 

[java]   view plain copy print ?
  1. public class ResOperatorFactoryBackend implements IResOperatorFactory{  
  2.   
  3.       
  4.     private static ResOperatorFactoryBackend instance=null;  
  5.       
  6.     private ResOperatorFactoryBackend(){  
  7.   
  8.     }  
  9.   
  10.     /** 
  11.      * 获取资源操作工厂实例 
  12.      */  
  13.     public static ResOperatorFactoryBackend getInstance(){  
  14.           
  15.         if(instance==null){  
  16.             instance=new ResOperatorFactoryBackend();  
  17.         }  
  18.         return instance;  
  19.     }  
  20.       
  21.     /** 
  22.      * 创建资源操作实例 
  23.      */  
  24.     public ResOperator createResOperator(){  
  25.           
  26.         ResOperatorBackend resOperatorBackend=null;  
  27.         try {  
  28.             resOperatorBackend = new ResOperatorBackend();  
  29.         } catch (RemoteException e) {  
  30.             // TODO Auto-generated catch block  
  31.             e.printStackTrace();  
  32.         }  
  33.           
  34.         return resOperatorBackend;  
  35.     }  
  36.   
  37.     /** 
  38.      * 创建批量资源操作实例 
  39.      */  
  40.     public BatchResOperator createBatchResOperator() {  
  41.   
  42.         BatchResOperatorBackend batchResOperatorBackend=null;  
  43.         try {  
  44.             batchResOperatorBackend = new BatchResOperatorBackend();  
  45.         } catch (RemoteException e) {  
  46.             // TODO Auto-generated catch block  
  47.             e.printStackTrace();  
  48.         }  
  49.           
  50.         return batchResOperatorBackend;  
  51.     }  



在具体应用场景下,传入工厂实例:

 

[java]   view plain copy print ?
  1. /** 
  2.  * 设置资源操作工厂接口类 
  3.  * @param resOperatorFactory 
  4.  */  
  5. public void setResOperatorFactory(IResOperatorFactory resOperatorFactory){  
  6.     ResOperatorFactory.getInstance().setIResOperatorFactory(resOperatorFactory);  
  7. }  

你可能感兴趣的:(Factory Pattern)