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

posted on 2008-05-13 16:36 云淡风清 阅读(1505) 评论(1)  编辑  收藏 所属分类: Design Patterns

评论

# re: 创建模式——简单工厂模式 2008-05-16 15:37 网上买书

为什么要使用工厂模式,它能帮助解决什么问题?分析的不错  回复  更多评论   


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


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

导航

统计

常用链接

留言簿(1)

随笔分类(15)

随笔档案(15)

收藏夹(1)

搜索

最新评论

阅读排行榜

评论排行榜