单件模式(Singleton Pattern)(二):HeadFirst中的巧克力工厂的设计
2013-05-11 09:24
447 查看
以《HeadFirst设计模式》中的巧克力工厂为例,介绍单件模式的使用场景。
万一存在多个ChocolateBoiler(巧克力锅炉),就不一定按照我们限制的流程去生产,从而出现很多糟糕的情况,所以必须将ChocolateBoiler设计成一个单件。
![](http://img.blog.csdn.net/20130504074359446)
ChocolateController锅炉控制器类:
转载请注明出处:http://blog.csdn.net/jialinqiang/article/details/8866755
一、问题描述
现代化的巧克力工厂具备计算机控制的巧克力锅炉,锅炉做的事就是把巧克力和牛奶融在一起,然后送到下一个阶段,以制造成巧克力棒。Choc-O-Holic公司有一个巧克力锅炉控制器用于控制锅炉活动的进行,比如:锅炉内为空时才允许加入原料、锅炉内存在原料并且尚未煮沸时才允许进行煮沸、排出牛奶和巧克力时要求炉内的存在原料并且已经被煮沸。万一存在多个ChocolateBoiler(巧克力锅炉),就不一定按照我们限制的流程去生产,从而出现很多糟糕的情况,所以必须将ChocolateBoiler设计成一个单件。
二、类图
三、代码
ChocolateBoiler(巧克力锅炉)类:package com.pattern.singleton; public class ChocolateBoiler { private boolean empty; private boolean boiled; private static ChocolateBoiler uniqueInstance; private ChocolateBoiler() { empty = true; boiled = false; } public static ChocolateBoiler getInstance() { if (uniqueInstance == null) { System.out.println("Creating unique instance of Chocolate Boiler"); uniqueInstance = new ChocolateBoiler(); } System.out.println("Returning instance of Chocolate Boiler"); return uniqueInstance; } public void fill() { if (isEmpty()) { empty = false; boiled = false; // 在锅炉内填满巧克力和牛奶的混合物 } } public void drain() { if (!isEmpty() && isBoiled()) { //排出煮沸的巧克力和牛奶 empty = true; } } public void boil() { if (!isEmpty() && !isBoiled()) { //将炉内物煮沸 boiled = true; } } public boolean isEmpty() { return empty; } public boolean isBoiled() { return boiled; } }
ChocolateController锅炉控制器类:
package com.pattern.singleton; public class ChocolateController { public static void main(String args[]) { ChocolateBoiler boiler = ChocolateBoiler.getInstance(); boiler.fill(); boiler.boil(); boiler.drain(); //ChocolateBoiler boiler2 = ChocolateBoiler.getInstance(); } }
转载请注明出处:http://blog.csdn.net/jialinqiang/article/details/8866755
相关文章推荐
- HeadFirst 设计模式 5 单例模式(巧克力工厂)
- 设计模式之五:单件模式(巧克力工厂锅炉 模拟流程)
- 设计模式--单件模式
- C#设计模式---单件模式(SingleTon Pattern)
- 设计模式--单件模式Singleton(创建型)
- 设计模式系列之(一)-------------------单件模式(Singleton)
- 设计模式笔记(2)---单件模式(创建型)
- .NET设计模式(2):单件模式(Singleton Pattern)
- 设计模式学习笔记之单件模式
- PHP设计模式4-单件和单态模式
- 设计模式之单件模式
- 设计模式之单件模式(Singleton)
- Sigleton单件(创建型模式)--面向对象设计模式纵横谈讲座笔记之二
- HeadFirst 设计模式笔记(六)—— 命令模式
- .NET简谈设计模式之(单件模式)
- .NET设计模式:单件模式(Singleton Pattern)
- 设计模式之-----单件(singleton)
- 【HeadFirst 设计模式学习笔记】1.策略模式
- 设计模式 单件模式(Singleton)
- Head First 设计模式——单件模式(Singleton Pattern)