[关键字]:java,design pattern,设计模式,《Java与模式》学习,Flyweight Pattern,享元模式
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com) http://wintys.blogjava.net
[正文]:
一个单纯享元的例子:咖啡摊(Coffee Stall)
package pattern.flyweight.coffee.stall;
import java.util.*;
/**
* 一个单纯享元的例子
* 咖啡摊:Coffee Stall
* @version 2009-6-25
* @author Winty(wintys@gmail.com)
*/
public class CoffeeStallTest{
public static void main(String[] args){
FlavorFactory f = FlavorFactory.getInstance();
Order o1,o2,o3;
o1 =f.factory("Black Coffee");
o2 = f.factory("Espresso");
o3 = f.factory("Black Coffee");
o1.serve();
o2.serve();
o3.serve();
f.checkFlyweight();
}
}
/**
* 抽象享元角色
*/
abstract class Order{
public abstract void serve();
public abstract String getFlavor();
}
/**
* 具体享元角色
*/
class Flavor extends Order{
private String flavor;//内蕴状态
public Flavor(String flavor){
this.flavor = flavor;
}
@Override
public void serve(){
System.out.println("serve " + flavor);
}
@Override
public String getFlavor(){
return flavor;
}
}
/**
* 享元工厂:使用单例模式实现
*/
class FlavorFactory{
private static FlavorFactory f = new FlavorFactory();
private Map<String , Order> map;
public FlavorFactory(){
map = new HashMap<String , Order>();
}
public static FlavorFactory getInstance(){
return f;
}
public Order factory(String flavor){
Order order = null;
if(map.containsKey(flavor)){
order = map.get(flavor);
}
else{
order = new Flavor(flavor);
map.put(flavor , order);
}
return order;
}
/**
* 辅助方法
*/
public void checkFlyweight(){
Iterator<Map.Entry<String , Order>> it
= map.entrySet().iterator();
System.out.println(""ncheck flyweight:");
while(it.hasNext()){
Map.Entry<String , Order> entry = it.next();
String key = entry.getKey();
System.out.println("key:" + key);
}
}
}
运行结果:
serve Black Coffee
serve Espresso
serve Black Coffee
check flyweight:
key:Black Coffee
key:Espresso
- 大小: 45.4 KB
分享到:
相关推荐
用享元模式分析并实现一个具体案例。在一家咖啡店中客户每买一杯咖啡,咖啡制做系统就相应地创建该杯咖啡的配料表,并将其发送给店内的咖啡制做机,咖啡制做机接收到系统发送的配料表后便开始制造客户所买的咖啡。...
宠物咖啡馆-宠物咖啡馆平台-宠物咖啡馆平台源码-宠物咖啡馆平台java代码-宠物咖啡馆平台设计与实现-基于springboot的宠物咖啡馆平台-基于Web的宠物咖啡馆平台设计与实现-宠物咖啡馆网站-宠物咖啡馆网站源码-宠物咖啡...
宠物咖啡馆-宠物咖啡馆平台-宠物咖啡馆平台源码-宠物咖啡馆平台java代码-宠物咖啡馆平台设计与实现-基于springboot的宠物咖啡馆平台-基于Web的宠物咖啡馆平台设计与实现-宠物咖啡馆网站-宠物咖啡馆网站源码-宠物咖啡...
国家开放大学形考参加答案,欢迎借阅!
微信静态模板---咖啡网站模板
纯html模板-咖啡色调个人博客CSS模板_咖啡 咖啡色 二栏 简单 个人 博客.zip
1、咖啡店情况-----------------------------2 2、市场分析-------------------------------4 3、营销策略-------------------------------8 4、人员与组织结构-------------------------10 5、财务分析------------...
call-coffee-咖啡创业计划书
深度学习-目标分类-咖啡质量分类 语言:python 目的:用于咖啡质量分类,可以作为学习参考。 内容包括:源码和数据集,部分带文章。超过十份源码。 带数据集很好运行,主页有搭建环境过程。主页有更多源码。 ...
创业计划书-奶茶咖啡甜品蛋糕面包-call-coffee-咖啡创业计划书
商业贸易行业:基于瑞幸咖啡宏微观数据看咖啡连锁新零售模式-0624-东方证券-20页.pdf
创业计划书-奶茶咖啡甜品蛋糕面包-咖啡书吧创业计划书
创业计划书-奶茶咖啡甜品蛋糕面包-咖啡店创业计划书
创业计划书-奶茶咖啡甜品蛋糕面包-咖啡蛋糕店创业计划书
创业计划书-奶茶咖啡甜品蛋糕面包-咖啡厅商业计划书范本