工厂模式

作用

  1. 实现了创建者和调用者的分离
  2. 详细分类
    简单工厂模式
    工厂方法模式
    抽象工厂模式

符合OOP七大原则

  1. 开闭原则
  2. 依赖倒转原则
  3. 迪米特法则

核心本质

  1. 实例化对象不使用new,用工厂方法代替
  2. 将选择实现类,创建对象统一管理和控制,从而将调用者和我们的实现类解耦。
    工厂模式参考
    (笔记最优)

备注

  1. 抽象工厂模式:创建工厂的抽象工厂

抽象工厂示例

##先定义两个产品
public interface IPhoneProduct {

    void start();

    void shutdown();
}
public interface IRouterProduct {

    void sendSms();
}
##在具体实现两个产品接口
public class XiaomiPhoneProduct implements IPhoneProduct{
    @Override
    public void start() {
        System.out.println("小米手机开机");
    }

    @Override
    public void shutdown() {
        System.out.println("小米手机关机");
    }
}
public class XiaomiRouterProduct implements IRouterProduct{
    @Override
    public void sendSms() {
        System.out.println("小米路由器发短信");
    }
}
public class HuaweiPhoneProduct implements IPhoneProduct{
    @Override
    public void start() {
        System.out.println("华为手机开机");
    }

    @Override
    public void shutdown() {
        System.out.println("华为手机关机");
    }
}
public class HuaweiRouterProduct implements IRouterProduct{
    @Override
    public void sendSms() {
        System.out.println("华为路由器发短信");
    }
}
##定义一个超级工厂
public interface IProductFactory {

    IPhoneProduct getPhone();

    IRouterProduct getRouter();
}
##创建具体的工厂
public class XiaomiFactory implements IProductFactory {
    @Override
    public IPhoneProduct getPhone() {
        return new XiaomiPhoneProduct();
    }

    @Override
    public IRouterProduct getRouter() {
        return new XiaomiRouterProduct();
    }
}

public class HuaweiFactory implements IProductFactory {
    @Override
    public IPhoneProduct getPhone() {
        return new HuaweiPhoneProduct();
    }

    @Override
    public IRouterProduct getRouter() {
        return new HuaweiRouterProduct();
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值