工厂模式

    xiaoxiao2023-10-26  172

    1.简单工厂模式 原理: 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。

    举例

    抽象产品:抽象手机或者接口手机 具体产品:安卓,苹果,诺基亚 工厂:只有一个工厂,根据传入什么类型手机,就创建什么类型手机

    缺点:当我增加一台中国手机,只是实现手机接口,没有修改代码,只是增加 但是,在工厂类里就要修改逻辑,增加一个判断手机类型是否中国的, 这就违背了对扩展开发,修改关闭原则了

    2.工厂方法模式

    将上面的具体工厂变成抽象工厂就行,具体生产什么手机,交由子类去生产

    public interface Factory { public mobilephone factory(String type); }

    这样当增加一台中国手机,中国手机实现mobilephone接口,然后增加一个生产中国手机的具体工厂实现Factory 这样就不修改之前的具体工厂代码,而是直接增加一个具体工厂就好 这样的好处就是遵守了对扩展开发,对修改关闭原则

    补充:具体工厂变成抽象工厂后,直接在抽象工厂里加一个生产类型手机的方法,就是工厂方法模式

    3.抽象工厂模式

    产品族和产品等级。 每一个模式都是针对一定问题的解决方案。抽象工厂模式与工厂方法模式的最大区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。 上图是工厂方法模式体现,即是一个工厂只生产同一个产品等级,比如手机工厂,可以生产苹果,安卓等同类型的产品,却不能生产电脑

    上图是抽象工厂模式体现,是产品族工厂,即一个产品族工厂,可以生产手机,手机电池,手机贴膜等,不像工厂方法模式,一个工厂只能生产同一产品,比如,手机工厂生产手机,手机电池工厂只生产手机电池 如上图,一个具体工厂可以生产一个产品族

    为什么要抽象工厂模式? 1.如上面,cpu和主板这两个产品是相互存在依赖关系的,需要相互兼容才行 2.如果通过cpu工厂和主板工厂各自生产自己的产品,这样没有体现有依赖关系 3.最好就是使用一个工厂,生产兼容的cpu和主板,这样就体现cpu和主板的相互依赖了

    最新回复(0)