简单工厂模式

就是,对对象实例化的过程和需要实例化的对象进行细节上的封装。


优点:工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关类。对于客户端来说,去除了与具体产品的依赖。



缺点:当需要增加产生一个新对象实例的方法时,需要修改工厂类,这样,工厂类就违背了“开
-闭原则”。

工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到了子类。



工厂方法模式实现,客户端进行工厂的实例化,产生哪一个工厂实例的逻辑判断依然存在。工厂方法把简单工厂内部逻辑判断转移到了客户


端。工厂方法模式就是利用了“依赖倒转原则”解决了简单工厂模式违背“开
-闭原则”的问题。

抽象工厂模式

提供一个创建一系列相关或者相或依赖对象的接口,而不需要指定它们具体的类。



通常在运行时刻产生一个
ConcreteFactory实例,这个具体工厂再创建具有特定实现的产品实例。为创建不同的产品对象,客户端应使用不同的具体工厂。



优点:易于改变产品系列;具体的创建过程与客户端分离,客户端操作抽象接口产生实例。



缺点:增加一种产品(对象),需要改变的地方很多。

用简单工厂来改进抽象工厂

用反射+抽象工厂进行改进

所有用简单工厂的地方,都可以考虑用反射来解除if,case判断语句带来的耦合。

用反射+配置文件进行改进


只有注册用户登录后才能发表评论。


网站导航: