本文共 1141 字,大约阅读时间需要 3 分钟。
本文只讲解3中模式的对比,不讲解详情
核心方法: 工厂类的CreateOperation(String),让其通过多态,
创造相应实例。
优点: 增加各种复杂的运算时,工厂类可以封装变化,让客户端更加方便的实现运算功能。
缺点: 违背开放-封闭原则。
使用场景: 比如实现运算功能的时候,需求可能会很多,很容易变化。
简单工厂模式中的工厂类与分支耦合,那么根据依赖倒置原则,我们把工厂类抽象出一个接口,这个接口只有一个方法,就是创建抽象产品的工厂方法。然后,所有要生产具体类的工厂,就去实现这个接口,这样一个简单工厂模式的工厂类,变成了一个工厂抽象接口和多个具体生产对象的工厂。于是,当要新增“求m的n次方”的时候,就不需要更改原有的工厂类了,只需要增加此功能的运算类和相应的工厂类就可以了。
优点:
缺点:
提供一个创建一系列相关
或相互依赖
的接口,而无需指定它们具体的类。
优点: 易于交换产品系列,这是最大的优点。例如IFactory factory=new AccessFactory(),只在初始化的时候出现一次,这样改变一个应用的具体工厂变得很容易,只需要改变具体工厂即可使用不同的产品配置。如果现在要改变数据库访问,只需要修改具体工厂就行了。
它让具体的创建过程和客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户端代码中。
是开放-封闭原则、依赖倒转原则的良好运用。其实,这一点和工厂模式一样。
缺点: 如果要增加一个Project项目表(一个系列),至少要添加3个类,IProject,SqlServerProject,AccessProject,还需要修改IFactory,SqlServerFactory,AccessFactory,极不方便。用反射+抽象工厂解决。
工厂模式和抽象工厂模式的区别
转载地址:http://ghbrb.baihongyu.com/