工厂模式的好处在哪里 工厂模式 好处

工厂模式的好处在哪里 工厂模式 好处

工厂模式的好处,工厂模式的好处在哪里?

工厂方法模式是简单工厂模式的进一步抽象和升级,解决了简单工厂模式每当添加新的产品品类的时候,都需要修改工厂类的问题。

工厂方法模实现了可扩展,同时还满足了开闭设计模式的原则,使用频次也更高@mikechen

工厂方法模式的定义

工厂方法模式(英语:Factory method pattern),它属于类创建型模式,也被称为多态工厂模式,其定义了一个创建某种产品的接口,但由子类决定要实例化的产品是哪一个,从而把产品的实例化推迟到子类。

在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做,这个核心类则摇身一变,成为了一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触产品类被实例化的细节。

工厂方法模式的结构

工厂方法模式包含如下4类角色:

1.Product:抽象产品

它是定义产品的接口,是工厂方法模式所创建对象的超类型,也就是产品对象的公共父类

2.ConcreteProduct:具体产品

这个角色实现了抽象产品角色所声明的接口,工厂方法模式所创建的每一个对象都是某个具体产品角色的实例。

3.Factory:抽象工厂

抽象工厂是工厂方法模式的核心,所有创建对象的工厂类都必须实现该接口。

4.ConcreteFactory:具体工厂

它是抽象工厂类的子类,实现了抽象工厂中定义的工厂方法,工厂方法模式所创建的每一个对象都是某个具体产品角色的实例。

工厂方法模式的实现1.创建抽象工厂类

创建抽象工厂类的主要作用:定义具体工厂的公共接口。

package com.mikechen.java.design.factory.method;/** * 抽象工厂 * * @author mikechen */public abstract class AbstractFactory { public abstract AbstractProduct produceProduct();}

2.创建抽象产品类

创建抽象产品类的主要作用:定义具体产品的公共接口。

package com.mikechen.java.design.factory.method;/** * 抽象产品 * * @author mikechen */public abstract class AbstractProduct { public abstract void make();}

3.创建具体产品类

创建具体产品类的主要作用:继承抽象产品类,定义生产的具体产品。

1)具体产品A

package com.mikechen.java.design.factory.method;/** * 目标产品A * * @author mikechen */public class ConcreteProductA extends AbstractProduct { @Override public void make() { System.out.println("产品A出炉"); }}

2)具体产品B

package com.mikechen.java.design.factory.method;/** * 目标产品B * * @author mikechen */public class ConcreteProductB extends AbstractProduct { @Override public void make() { System.out.println("产品B出炉"); }}

4.创建具体工厂类

创建具体工厂类的主要作用:创建具体工厂类(继承抽象工厂类),定义创建对应具体产品实例的方法。

1)具体工厂A

package com.mikechen.java.design.factory.method;/** * 目标工厂A * * @author mikechen */public class ConcreteFactoryA extends AbstractFactory { @Override public AbstractProduct produceProduct() { return new ConcreteProductA(); }}

2)具体工厂B

package com.mikechen.java.design.factory.method;/** * 目标工厂B * * @author mikechen */public class ConcreteFactoryB extends AbstractFactory { @Override public AbstractProduct produceProduct() { return new ConcreteProductB(); }}

工厂方法模式的优缺1.优点

1)遵循开闭原则

无需更改现有客户端代码,新增一种产品时,只需要增加相应的具体产品类和相应的工厂子类即可,而简单工厂模式需要修改工厂类的判断逻辑。

2)遵循单一职责原则

每个具体工厂类只负责创建对应的产品,而简单工厂中的工厂类存在复杂的switch逻辑判断。

3)不使用静态工厂方法

不使用静态工厂方法,可以形成基于继承的等级结构,简单工厂模式的工厂类使用静态工厂方法。

2.缺点

每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。

工厂方法模式的应用场景

首先,工厂方法模式是new一个对象的替代品,所以在所有需要生成对象的地方都可以使用,但是需要慎重地考虑是否要增加一个工厂类进行管理,增加代码的复杂度。

其次,需要灵活的、可扩展的框架时,可以考虑采用工厂方法模式。

再次,当每个对象的创建逻辑都比较复杂的时候,为了避免设计一个过于庞大的简单工厂类时,将创建逻辑拆分得更细,每个对象的创建逻辑独立到各自的工厂类中。

工厂方法模式的总结

工厂方法模式是简单工厂模式的进一步抽象和推广,由于使用了面向对象的多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。

更多架构技术干货,私信【架构】即可查看我原创的300期+BAT架构技术系列文章与1000+大厂面试题答案合集。以上就是小编分享的关于工厂模式 好处.webp”/>

网友提问:

工厂模式的好处,工厂模式 好处?

优质回答:

定制家具“共享工厂”模式可行吗?

模式是可行的,因为国家安全环保治理,小作坊工厂独立成本越来越高无法生存,工厂共享适合将小作坊整合成大厂,股份制共同经营管理,统一管理产销分离,专业的人做专业的事,做销售的专心销售,生产的专心生产,合作共赢!

其他网友观点

定制家具是必然的,共享工厂是趋势,这样叫资源互补,按需分配,就不会有积压产品,剩余无价值了。

其他网友观点

很荣幸为你解答这个问题,让我们一起走近这个问题,开始共同学习和探讨。

我认为传统家具的制造完全可以作用共享工厂的模式,将小型家具厂集中起来,可以节约资金,同时可以产生很强的宣传效应,顾客也可以根据生产而选择家具,同时建立互相监督机制,促进合法合规生产,打击制假造假。

下面能为大家分享关于这个问题的意见和看法,希望对大家有所帮助,同时希望我的关于这个问题的分享能够帮助到大家,同时也希望大家能够喜欢我的分享。

我认为市场法则,优胜劣汰,不要拿环保说事,共享更是自欺欺人。专心把质量做好,提高设计水平才是正儿八经要做的事情。

我认为模式是可行的,因为国家安全环保治理,小作坊工厂独立成本越来越高无法生存,工厂共享适合将小作坊整合成大厂,股份制共同经营管理,统一管理产销分离,专业的人做专业的事,做销售的专心销售,生产的专心生产,合作共赢。

以上的分享是我关于这个问题的解答,都是个人的意见与建议,希望我分享的这个问题的解答能够帮助到大家,同时也希望大家能够喜欢我的分享,并且大家如果有更好的关于这个问题的解答,还望分享评论出来我们共同讨论这话题。

最后在这里,祝大家在每一个早晨有一个美好的开始,开启新一天的旅程,并且每天开开心心的生活,快快乐乐的工作,谢谢!

其他网友观点

红木家具是非标性产品,人为因素比重大。定制共享模式将使趋利性会m更强,催发人性贪婪。只有产销分开,才能实现这个行业健康发展,销售可以共享,生产切不可!

其他网友观点

传统家具的制造完全可以作用共享工厂的模式,将小型家具厂集中起来,可以节约资金,同时可以产生很强的宣传效应,顾客也可以根据生产而选择家具,同时建立互相监督机制,促进合法合规生产,打击制假造假!

与工厂模式的好处相关的文章