工厂模式
一、简单工厂模式(静态工厂模式)
具体的需求
看一个披萨的项目:要便于披萨种类的扩展,要便于维护
- 披萨的种类很多(比如 GreekPizz、CheesePizz 等)
- 披萨的制作有 prepare,bake, cut, box
- 完成披萨店订购功能。
使用传统的方式来完成
制作披萨:
UML类图设计:
代码如下:
订购披萨:
UML类图设计:披萨店通过订购披萨的类来完成各种披萨的订购任务
代码如下:
结果:
传统的方式的优缺点
4) 改进的思路分析
分析:修改代码可以接受,但是如果我们在其它的地方也有创建Pizza的代码,就意味
着,也需要修改,而创建Pizza的代码,往往有多处。
思路:把创建Pizza对象封装到一个类中,这样我们有新的Pizza种类时,只需要修改该
类就可,其它有创建到Pizza对象的代码就不需要修改了.-> 简单工厂模式
简单工厂模式的基本介绍
使用简单工厂模式
简单工厂模式的设计方案: 定义一个可以实例化Pizaa对象的类,封装创建对象的代码。
UML设计:
代码如下:
聚合关系
结果:
为什么又叫静态工厂模式?
二、工厂方法模式
案例解析
披萨项目新的需求:客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪pizza、北京的胡椒pizza 或者是伦敦的奶酪pizza、伦敦的胡椒pizza。
思路1
使用简单工厂模式,创建不同的简单工厂类,比如BJPizzaSimpleFactory、LDPizzaSimpleFactory 等等.从当前这个案例来说,也是可以的,但是考虑到项目的规模,以及软件的可维护性、可扩展性并不是特别好
思路2
使用工厂方法模式
工厂方法模式介绍
工厂方法模式应用案例
披萨项目新的需求:客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪
pizza、北京的胡椒pizza 或者是伦敦的奶酪pizza、伦敦的胡椒pizza
UML设计:
代码如下:
Pizza:
披萨order:
三、抽象工厂模式
抽象工厂模式介绍
抽象工厂模式应用实例
使用抽象工厂模式来完成披萨项目.
UML设计:
代码:
pizza
order:
工厂模式在JDK-Calendar 应用的源码分析