设计模式之抽象工厂模式
2023-12-24 12:47:46
抽象工厂模式
1.定义
抽象工厂模式(Abstract Factory Pattern)是一种比较常用的模式,其定义如下:
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.(为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。)
2.示例代码
public abstract class AbstractProductA {}
public abstract class AbstractProductB {}
public abstract class AbstractFactory {
/**
* 抽象类
*
* @return AbstractProductA
*/
abstract AbstractProductA createProductA();
/**
* 抽象类
*
* @return AbstractProductB
*/
abstract AbstractProductB createProductB();
}
public class ConcreteProductA extends AbstractProductA {}
public class ConcreteProductB extends AbstractProductB {}
public class ConcreteFactory extends AbstractFactory {
@Override
AbstractProductA createProductA() {
return new ConcreteProductA();
}
@Override
AbstractProductB createProductB() {
return new ConcreteProductB();
}
}
3.优点
- 封装性 每个产品的实现类不是高层模块要关心的,它要关心的是什么?是接口,是抽象,它不关心对象是如何创建出来,这由谁负责呢?工厂类,只要知道工厂类是谁,我就能创建出一个需要的对象,省时省力,优秀设计就应该如此。
- 约束为非公开状态
4.缺点
抽象工厂模式的最大缺点就是产品族扩展非常困难,为什么这么说呢?我们以通用代码为例,如果要增加一个产品C,也就是说产品家族由原来的2个增加到3个,看看我们的程序有多大改动吧!抽象类AbstractFactory
要增加一个方法createProductC()
,然后两个实现类都要修改,想想看,这严重违反了开闭原则,而且我们一直说明抽象类和接口是一个契约
文章来源:https://blog.csdn.net/youxiaxiaomage/article/details/135179921
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!