标签:
1,简单工厂模式的分类和使用场景:
(1)简单工厂模式一般分为:普通简单工厂,多方法简单工厂,静态方法简单工厂
(2)使用场景:
总体来说,工厂模式适合,凡是出现了大量的产品需要创建,并且具有共同的接口时,
可以通过工厂方法模式进行创建,在以下的三种模式中,第一种如果传入字符串有误,不能
正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会
选择第三种-------静态工厂方法模式
![技术分享](http://img.blog.csdn.net/20160425100009163?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2,普通简单工厂模式:
(1)就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。如图:
![技术分享](http://img.blog.csdn.net/20160425100033378?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
最后,建工厂类:
![技术分享](http://img.blog.csdn.net/20160425100107149?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3,多方法简单工厂模式:
(1)多方法简单工厂是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递
的字符串出错,则不能正确的创建对象,而多个工厂方法模式是提供多个工厂方法,分别
创建对象。
![技术分享](http://img.blog.csdn.net/20160425100138222?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![技术分享](http://img.blog.csdn.net/20160425100157050?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
4,多个静态方法简单工厂模式:
![技术分享](http://img.blog.csdn.net/20160425100225479?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
*******************************下面这种方法才是王道*************************************
5,工厂方法模式(Factoty Method):
(1)简单工厂模式有一个问题,类的创建依赖工厂类,如果想要扩展程序,必须对工厂类
进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,解决方法就是用到
工厂方法模式,创建一个接口和创建多个工厂实现类,这样一旦需要增加新的功能,直接
增加新的工厂类就行了,不需要修改之前的代码。
![技术分享](http://img.blog.csdn.net/20160425100258385?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![技术分享](http://img.blog.csdn.net/20160425100315551?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![技术分享](http://img.blog.csdn.net/20160425100329964?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![技术分享](http://img.blog.csdn.net/20160425100345793?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(2)工厂方法模式的好处:如果你想要增加一个新的功能,则只需要做一个实现类,实现
Sender接口,同时做一个工厂类,实现Provider接口,就OK了,无需去改动现成的代码,
这样做扩展性比较好
JAVA--简单工厂模式,工厂方法模式--设计模式一
标签:
原文地址:http://blog.csdn.net/qq_26891045/article/details/51240165