工厂模式的优势:
1 良好的封装型,代码结构清晰,一个对象建立是有条件约束的,若是一个调用者须要一个具体的产品对象,只须要知道这个产品的类名就能够了,不用知道建立对象的艰辛过程,下降模块间的耦合性。缓存
2 工厂方法模式的扩展性很是的好,在增长产品类的状况下,只须要适当的修改具体的工厂类或扩展一个工厂类,就能够完成。spa
3 屏蔽产品类调试
4 高度结偶对象
一个简单工厂模式实例
定义产品接口接口
实现2个产品类ip
定义工厂接口get
实现工厂类产品
业务场景it
运行结果class
至此,一个简单工厂就完成了。
延迟加载的工厂模式:
一样的先定义共有的man接口
定义两个实现类
定义抽象工厂接口
抽象工程实现类
业务场景类
结果
经过断点调试为,咱们能够看到,第一词调用createMan方法的时候,是经过( Man ) Class.forName( T.getName( ) ).newInstance( );获取实例的,可是第二次调用的时候,使用了缓存HashMap里面的值。