单件模式(Singleton Pattern)(二):HeadFirst中的巧克力工厂的设计
来源:互联网 发布:剑三捏脸党用什么软件 编辑:程序博客网 时间:2024/04/29 02:32
以《HeadFirst设计模式》中的巧克力工厂为例,介绍单件模式的使用场景。
一、问题描述
现代化的巧克力工厂具备计算机控制的巧克力锅炉,锅炉做的事就是把巧克力和牛奶融在一起,然后送到下一个阶段,以制造成巧克力棒。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
- 单件模式(Singleton Pattern)(二):HeadFirst中的巧克力工厂的设计
- HeadFirst 设计模式 5 单例模式(巧克力工厂)
- .NET设计模式-单件模式(Singleton Pattern)
- .NET设计模式:单件模式(Singleton Pattern)
- 设计模式之单件模式(Singleton Pattern )
- 单件模式(Singleton Pattern)-----设计模式学习
- .Net设计模式------单件模式(Singleton Pattern)
- 设计模式之单件模式(Singleton Pattern)
- .NET设计模式:单件模式(Singleton Pattern)
- C#设计模式01:单件模式(Singleton Pattern)
- 设计模式——单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- JQueryEasyUI学习笔记(三)
- qt中如何运行外部程序,QProcess类
- WebRTC学习笔记
- DevExpress
- Firebug入门指南
- 单件模式(Singleton Pattern)(二):HeadFirst中的巧克力工厂的设计
- 多线程学习之四
- ffmpeg + x264 编码H264(x86+arm)
- easyUI与选择WebUI
- 入侵提权过程中猜解linux路径与windows路径,网站路径暴力
- C++STL
- ubuntu 联网
- 【C++】对象和指针
- H264解码器源码(Android 1.6 版和QT都可以调用)