抽象工厂模式总结

1、引言:

 在前面分别讲述了简单工厂模式和工厂模式,工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,但是在现实生活中,一个工厂只创建单个产品这样的例子很少,因为现在工厂都多元化了,是一个工厂创建一系列产品,此时工厂模式显示不适用,抽象工厂模式可以很好的解决此问题

2、抽象工厂模式的定义:

a、抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

b、抽象工厂:声明生成一系列抽象产品的方法。

c、具体工厂:执行生成一系列抽象产品的方法,生成一系列具体的产品

d、抽象产品:声明一系列某一种产品的接口。

e、具体产品:定义具体工厂生成的具体产品的对象,实现产品接口。

3、抽象工厂模式的结构图:

4、抽象工厂模式的优点:

a、抽象工厂模式最大的好处是易于交换产品系列,由于具体工厂类,在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。不管是任何人的设计都无法去完全防止需求的更改,或者项目的维护,那么我们的理想便是让改动变得最小、最容易,例如我现在要更改以上代码的数据库访问时,只需要更改具体的工厂即可。

b、抽象工厂模式的另一个好处就是它让具体的创建实例过程与客户端分离,客户端是通过它们的抽象接口操作实例,产品实现类的具体类名也被具体的工厂实现类分离,不会出现在客户端代码中

5、抽象工厂模式的缺点:

a、如果增加一个项目的话需要重新加几个类和修改几个类,

b、客户端程序肯定不止一个,如果有一个100个调用数据的类,就需要更改100次实例化。

6、延伸:

a、用简单工厂来改进抽象工厂这样可以达到解耦的目的。

b、用反射+抽象工厂的数据访问程序可以去掉switch。

c、所有在用简单工厂的地方,都可以考虑用反射技术来去除switch或if,解除分支判断带来的耦合

7、反射的应用:

a、引用:using System.Reflection

b、格式:Assembly.load(“程序集名称”).CreateInstance("命名空间.类名称")


 

发布了80 篇原创文章 · 获赞 1 · 访问量 3951

猜你喜欢

转载自blog.csdn.net/m18731455318/article/details/103024003