首页 > 其他 > 详细

factory工厂模式之简单工厂SimpleFactory

时间:2016-01-23 01:05:58      阅读:178      评论:0      收藏:0      [点我收藏+]

简单工厂(Simple Factory)
  又叫静态工厂,是工厂模式三中状态中结构最为简单的。
1.主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口的不同类的实例。
2.或者针对每个产品,写一个对应的生产该产品的方法

 

代码解释:

1.创建2个产品:android手机、Apple手机

public class Android implements Product{

    public Android() {
        System.out.println("生产一个Android手机...");
    }
}
public class Apple implements Product{

    public Apple() {
        System.out.println("生产一个Apple手机...");
    }
}

2.创建产品生产工厂

public class SimpleFactory {
    
    /**
     * 简单工厂,生产一个苹果手机
     */
    public Product processApple(){
        return new Apple();
    }
    
    /**
     * 简单工厂,生产一个苹果手机
     */
    public Product processAndroid(){
        return new Android();
    }
}

  产品工厂也可以这样写:

public class SimpleFactory2 {
    
    /**
     * 简单工厂,生产一个产品
     * @return
     */
    public static Product processProduct(String name){
        if(name.equals("apple")){
            return new Apple();
        }else if(name.equals("android")){
            return new Android();
        }else{
            System.out.println("没有该产品");
            return null;
        }
    }
}

3.客户端访问(Test测试)

SimpleFactory factory = new SimpleFactory();
        
        //如果用户想要一个Apple手机
        Product apple = factory.processApple();
        //如果用户想要一个Android手机
        Product android = factory.processAndroid();

  若为第二种静态工厂形式:

-----------------添加参数的工厂---------------------
//生产一个android手机
SimpleFactory2.processProduct("android");

 


 缺陷:
 首先,我们每次想要增加一种新产品的时候,都必须修改SimpleFactory的原代码。
 其次,当我们拥有很多很多产品的时候,而且产品之间又存在复杂的层次关系的时候, 这个类必须拥有复杂的逻辑判断能力:

  if(A) ---> 生产A产品

  else if(B) ---> 生产B产品

  else... ---> 生产...

或写很多对应的生产该产品的方法:

  public void processA()...

  public void processB()...

  ...

 其代码量也将不断地激增,这对以后的维护简直就是恐怖两个字...
 还有就是整个系统都严重依赖SimpleFactory类,只要SimpleFactory类一出问题, 系统就进入不能工作的状态,这也是最为致命的一点....

---> 

factory工厂模式之简单工厂SimpleFactory

原文:http://www.cnblogs.com/yzlpersonal/p/5152365.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!