好多人都在探讨什么是工厂模式。有些人对工厂模式有了自己的见解,有的人还举了例子,画了图试图告诉我们什么是工厂模式。但是实际的问题应该只是我需要一个某个接口的对象,需要怎么做这个问题才对吧?
顺着我需要一个对象这个问题展开一下思考,你在java里面写代码只有下面的这几种写法
- 我需要的对象很有规律,我可以提炼出来,传入参数,得到我想要的对象。这就是所谓的简单工厂
- 这个对象没有什么规律,我想把这个对象的生成方法抽象出来,在java里面就两种写法
- 1 通过一个类的方法得到这个对象,父类只提供生成对象的接口,子类具体实现生成方式,这就是工厂方法模式,典型的用继承处理变化
- 2 通过一个类的属性得到这个对象,属性这东西本来就可以变的,外面想怎么set都行,是这个接口对象就好(只提要求,不做选择,你给的东西满足我的要求我就用,这就是依赖反转),通过属性提取变化的方式就用组合而不用继承,如果继承这个类,用这个类的子类重写这个类的方法,实现不一样的功能,就变成桥接了(通过组合和继承两种方案组合处理变化)。
应该关注的是某种模式解决的是哪个方面的典型问题,而不是什么是什么设计模式,设计模式这种东西才有实际的用途,才能真正的被理解。
感觉23设计模式仅仅只能起到定义一下设计领域的术语,大家好交流的作用,起不到什么学习作用。
header first 这种书还是少看,免得被带进沟里,还是写代码的时候多想想靠谱。