工厂方法模式
定义了一个创建对象的接口,但由子类决定要实现的类是哪一个。工厂方法让类把实例化推迟到子类。
所有的工厂模式都用来封装对象的创建。工厂方法模式通过让子类决定改创建的对象是什么,来达到将对象创建的过程封装的目的。
所有的工厂模式都用来封装对象的创建。工厂方法模式通过让子类决定改创建的对象是什么,来达到将对象创建的过程封装的目的。
工厂方法类图
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140114617-1306035337.png)
示例:Pizza工厂类图
以生产Pizza作为示例,下面是具体的工厂方法类图和实现的代码:
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140115727-1741831980.png)
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140116805-1032330202.png)
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140117446-672488324.png)
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140118008-1769334474.gif)
抽象产品类
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140118461-1505983895.png)
具体产品(类型A)
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140118883-1735486780.png)
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140119571-1598969016.png)
具体产品(类型B)
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140119914-2050796179.png)
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140120211-323264498.png)
抽象工厂类
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140120571-411922667.png)
具体创建者(具体的工厂)
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140120977-205938279.png)
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140121321-214252690.png)
测试类和测试结果
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140122008-1140787082.png)
![](https://images2015.cnblogs.com/blog/731047/201606/731047-20160601140122492-994901034.png)
转载请标明出处:http://www.cnblogs.com/ssslinppp/