设计模式(2)——工厂方法
记录对工厂方法的理解:
工厂方法的作用在于封装产品的实现细节及设置。比如手机工厂,如果可以设置手机的操作系统应该在工厂方法中提前设定然后通过工厂方法获取 PhoneFactory.getPhone();,
而不是通过客户端 new Phone(); phone.setOS("xxx"); 用户端只想要得到一部可以直接使用的手机(不需要任何无关其他操作)。 不同的手机厂商通过遵循同一个手机工厂接口生产自家的产品。
如果产品有许许多多的设置项,那么由工厂方法统一进行设置,从工厂方法获取对象会更好,如果需要改动的话只需要在工厂方法中修改即可,便于管理。
对抽象工厂的理解:
抽象工厂是管理工厂的工厂类。工厂方法是特属抽象工厂(只有一个产品)。
如果抽象工厂定义了智能家居工厂,包含手机、电饭煲、智能音箱 ......等产品的工厂,不同的厂商根据抽象工厂的标准实现各个产品的工厂,就称为抽象工厂。抽象工厂需要所有的产品基本确定,不会有过多的增加或减少,因为一旦抽象工厂增加了,那么所有实现了抽象工厂的工厂都需要修改。所以抽象工厂是对一系列稳定的产品的工厂进行管理。
使用xml文件配置spring的时候可能会需要很多 xxxFactory,这些bean都有很多的设置项,通过在xml文件中设置可以生成符合要求的bean而不需要在bean被使用的地方修改(便于管理,修改力度小),通过修改value可以切换不同厂家的工厂(多态的好处,抽象的好处 面向接口编程)。
简单工厂方法适用于,返回的对象类型需要根据客户端的输入实时进行变化,而不是全局进行替换。
欺骗自己最简单,欺骗自己最困难。
安慰自己最简单,安慰自己最困难。