创建模式之SimpleFactory——简单工厂模式

创建模式之SimpleFactory——简单工厂模式

1、简介
    简单工厂模式是一个对象创建型模式,它定义了一个用于创建对象的接口,让子类决定实例化哪一个类,它使得一个类的实例化延迟到了子类。
2、使用场景
    为什么要使用工厂模式,它能帮助解决什么问题?面向对象的封装(Encapsulation)和分派(Delegation)告诉我们,尽量将长的代码分派“切割”成每段,将每段再“封装”起来(减少段和段之间偶合联系性),这样就会将风险分散,以后如果需要修改,只要更改每段,不会再发生牵一动百的事情了。使用工厂模式,能够将创建实例和使用实例分开,封装了使用者将得到那些具体类的信息,并且隐藏了这些类的实例是如何被创建和放在一起的。
3、类图

4、实例
    先看看Product接口:
package  simpleFactory;

public   interface  Product {
   
public   void  doSth();
}

   
    再看看和他关联的具体的类:
package  simpleFactory;

public   class  ConcreteProduct1  implements  Product {
    
public   void  doSth(){
        System.out.print(
" this is product1 " );
    }
}

package  simpleFactory;

public   class  ConcreteProduct2  implements  Product {
        
public   void  doSth(){
        System.out.print(
" this is product2 " );
    }
}

package  simpleFactory;

public   class  ConcreteProduct3  implements  Product {
        
public   void  doSth(){
        System.out.print(
" this is product3 " );
    }
}

package  simpleFactory;

public   class  ConcreteProduct4  implements  Product {
        
public   void  doSth(){
        System.out.print(
" this is product4 " );
    }
}

    最后是工厂方法的核心类:
package  simpleFactory;

public   class  Creator {
    
public   static  Product productFactory( int  which) {

        
switch (which){
        
case   1 :
            
return   new  ConcreteProduct1();
            
break ;
        
case   2 :
            
return   new  ConcreteProduct2();
            
break ;
        
case   3 :
            
return    new  ConcreteProduct3();
            
break ;
        
case   4 :
            
return    new  ConcreteProduct4();
            
break ;
        
default :
            
return   null ;
        }
    }   
}

5、优缺点
    优点如下:
    客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。
    缺点也很明显:
    当产品修改时,工厂类也要做相应的修改。有点违背了开—闭原则。
   

你可能感兴趣的:(创建模式之SimpleFactory——简单工厂模式)