设计模式工厂

简单工厂模式

设计原则:遵循单一职责、违背开闭原则
常用场景:需要在一堆产品中选择其中一个产品
使用概率:99.99999%
复杂度:低
变化点:产品的种类
选择关键点:一种产品是否可根据某个参数决定它的种类
逆鳞:工厂类不能正常工作
相关设计模式
工厂方法模式:工厂方法模式是简单工厂模式的进一步抽象化,在这两者之间做选择,
主要看将工厂进一步抽象化是否有必要,通常情况下,如果工厂的作用仅仅是用来制造产品,则没必要使用工厂方法模式。

主要思想:
1.主要运用继承 定义约束性接口
2.实现接口 根据功效进行接口实现
3.定义根据参数值不同实例化不同子类的工厂方法

public interface SimpleInterface {
    public void dosomething();
}
public class SimpleImplementsA implements SimpleInterface {

    @Override
    public void dosomething() {
        System.out.println("A");
    }
}
public class SimpleImplementsB implements SimpleInterface {
    @Override
    public void dosomething() {
        System.out.println("B");
    }
}
public class SimpleFatory {
    private SimpleFatory() {
    }


    public static SimpleInterface produce(String type) {
        if ("A".equals(type)) {
            return new SimpleImplementsA();
        } else if ("B".equals(type)) {
            return new SimpleImplementsB();
        } else {
            return null;
        }
    }
}

 


工厂方法模式


设计原则:遵循单一职责、依赖倒置、开闭原则
常用场景:一种场景是希望工厂与产品的种类对客户端保持透明,给客户端提供一致的操作,另外一种是不同的工厂和产品可以提供客户端不同的服务或功能
使用概率:60%
复杂度:中低
变化点:工厂与产品的种类
选择关键点:工厂类和产品类是否是同生同灭的关系
逆鳞:无
相关设计模式
抽象工厂模式:工厂方法模式与抽象工厂模式最大的区别在于,在工厂方法模式中,工厂创造的是一个产品,而在抽象工厂模式中,工厂创造的是一个产品族。


主要思想:
与简单工厂模式不同的是,防止获取实例的工厂方法因传入错误值等外部因素引起错误
在工厂类中创建返回不同子类实例的方法
相当于把n多同类型的类实例化方法,集中一下 放到一个类中方便查看、和管理等

public class Factory {
    private Factory() {
    }

    public static SimpleInterface produceA(){
        return new SimpleImplementsA();
    }

    public static SimpleInterface produceB(){
        return new SimpleImplementsB();
    }
}

 



posted on 2017-10-31 19:19  zjj911  阅读(146)  评论(0编辑  收藏  举报