设计模式本质都是多态
1、单例模式
2、策略模式
策略模式中调用的方法是唯一的,封装的是不同对象的不同的方法,强调动作。可以认为相当于把if-else/switch封装了。
3、工厂模式:不同产品对应不同工厂
简单工厂:工厂类(SimpleFactory)拥有一个工厂方法(create)
工厂方法:工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品
抽象工厂:抽象工厂是应对产品族概念的。
其实只分工厂方法和抽象工厂(工厂模式),简单工厂只是一个叫法
工厂方法就是抽象工厂的特例,也就是每个产品类型只有一个,工厂方法在产品类型的方便扩展,抽象工厂在产品族上方便扩展。
而spring ioc结合两者,根本解决方法还是使用依赖注入。使用大容器BeanFactory管理所有Bean, 定义Bean时解决扩展产品问题,注入时有多态在可以解决产品族问题(抽象工厂在产品问题上不好扩展是因为写死了对象的生成,这里需要哪个注入哪个就解决了这个问题)。