工厂模式

工厂模式

作用:实现了创建者和调用者的分离

分类:
1、简单工厂模式
2、工厂方法模式
3、抽象工厂模式

工厂模式应遵从的原则:
1、OCP(开闭原则,Open-Closed Principle):对于扩展开放,对于修改关闭
2、DIP(依赖倒置原则,Dependence Inversion Principle):依赖抽象,而不依赖具体,即对接口编程,而不是对实现编程
3、LoD(迪米特法则,Law of Demeter):只与你直接的朋友通信,而避免和陌生人通信,即尽量降低类之间的耦合程度

核心本质:
1、实例化对象,用工厂方法代替new操作
2、将选择实现类、创建对象统一管理和控制,从而实现了调用者和创建者的解耦

**简单工厂模式:**简单工厂模式也叫作静态工厂模式,就是工厂类一般使用静态方法,通过接收参数的不同来返回不同的实例对象,只有通过修改代码,才能增加新产品,即违反了OCP原则
简单工厂模式的两种实现方式:


/**
 * @author ZLEI
 * @Title
 * @Description
 * @date 2019-07-26 21:22
 */
public class createCar {

    public static Car createCar(String type)
    {
        //简单工厂模式可能违反了OCP原则
        if("奥迪".equals(type))
            return new Audi();
        else if("比亚迪".equals(type))
            return new Byd();
        else return null;
    }
}

/**
 * @author ZLEI
 * @Title
 * @Description
 * @date 2019-07-26 21:35
 *
 * 简单工厂类的另一种实现方式
 *
 */
public class ctreateCar02 {

    public static Car createAudi()
    {
        return new Audi();
    }
    public static Car createByd()
    {
        return new Byd();
    }

**工厂方法模式:**不通过一个工厂类来创建对象实例,而是通过一组继承了相同接口的工厂类来实现

/**
 * @author ZLEI
 * @Title
 * @Description
 * @date 2019-07-26 21:42
 */
public class AudiFactory implements CreateFactory {


    @Override
    public Car createCar() {
        return new Audi();
    }
}

/**
 * @author ZLEI
 * @Title
 * @Description
 * @date 2019-07-26 21:42
 */
public class BydFactory implements CreateFactory {
    @Override
    public Car createCar() {
        return new Byd();
    }
}

这样做的目的是当增加新的产品时,不需改变原有的代码,只需增加一个新的工厂类即可实现,这样就遵守了OCP原则

抽象工厂模式:
用来生产不同产品族的全部产品。(对于增加新的产品,无能为力; 支持增加产品族) – 抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种、业务 分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值