结构型设计模式-享元模式
来源:互联网 发布:淘宝手机一屏尺寸多少 编辑:程序博客网 时间:2024/05/18 00:15
什么是享元模式
享元模式为运用共享技术有效的支持大量细粒度的对象。因为它可以通过共享大幅度地减少单个实例的数目,避免了大量非常相似类的开销。
享元模式是一个类别的多个对象共享这个类别的一个对象,而不是各自再实例化各自的对象。这样就达到了节省内存的目的。
实现享元模式
// Instances of CoffeeFlavour will be the Flyweightsclass CoffeeFlavour { private final String name; CoffeeFlavour(String newFlavor) { this.name = newFlavor; } @Override public String toString() { return name; }}// Menu acts as a factory and cache for CoffeeFlavour flyweight objectsclass Menu { private Map<String, CoffeeFlavour> flavours = new ConcurrentHashMap<String, CoffeeFlavour>(); CoffeeFlavour lookup(String flavorName) { if (!flavours.containsKey(flavorName)) flavours.put(flavorName, new CoffeeFlavour(flavorName)); return flavours.get(flavorName); } int totalCoffeeFlavoursMade() { return flavours.size(); }}class Order { private final int tableNumber; private final CoffeeFlavour flavour; Order(int tableNumber, CoffeeFlavour flavor) { this.tableNumber = tableNumber; this.flavour = flavor; } void serve() { System.out.println("Serving " + flavour + " to table " + tableNumber); }}public class CoffeeShop { private final List<Order> orders = new Vector<Order>(); private final Menu menu = new Menu(); void takeOrder(String flavourName, int table) { CoffeeFlavour flavour = menu.lookup(flavourName); Order order = new Order(table, flavour); orders.add(order); } void service() { for (Order order : orders) order.serve(); } String report() { return "\ntotal CoffeeFlavour objects made: " + menu.totalCoffeeFlavoursMade(); } public static void main(String[] args) { CoffeeShop shop = new CoffeeShop(); shop.takeOrder("Cappuccino", 2); shop.takeOrder("Frappe", 1); shop.takeOrder("Espresso", 1); shop.takeOrder("Frappe", 897); shop.takeOrder("Cappuccino", 97); shop.takeOrder("Frappe", 3); shop.takeOrder("Espresso", 3); shop.takeOrder("Cappuccino", 3); shop.takeOrder("Espresso", 96); shop.takeOrder("Frappe", 552); shop.takeOrder("Cappuccino", 121); shop.takeOrder("Espresso", 121); shop.service(); System.out.println(shop.report()); }}
0 0
- 设计模式-结构型模式-享元
- 设计模式--结构型--享元模式
- 结构型设计模式-享元模式
- 结构型设计模式-享元模式
- (C++设计模式) ------享元模式-- 结构型模式
- 设计模式 - 结构型模式 - 享元模式
- 设计模式-结构型模式:享元模式
- 设计模式->结构型模式->享元模式
- 设计模式-结构型-享元
- 设计模式--结构型模式之六-Flyweight享元
- 设计模式笔记(12)---享元模式(结构型)
- 设计模式(11)-结构型-享元模式(Flyweight)
- [设计模式-结构型]享元模式(Flyweight )
- 【设计模式基础】结构型模式 - 6 - 享元(Flyweight)
- java设计模式(结构型)之享元模式
- 设计模式--享元模式FlyWeight(结构型)
- 结构型设计模式---享元模式(Flyweight)
- 设计模式(结构型)之享元模式(Flyweight Pattern)
- ThreadPoolExecutor使用介绍
- 华为OJ-求车速
- IBM openblockchain学习(三)--Ledger源码分析
- 关于<lable></lable>标签的理解
- Android开发:创建一个可供编辑的图片(bitmap)
- 结构型设计模式-享元模式
- CvvImage类在MFC中使用的说明
- ios消息转发机制
- (1)Two Sum
- 高于均分的学生 oj
- 小白笔记--------------------矩阵连乘问题(求怎么加括号运算量最小)
- 彻底解决Spring mvc乱码
- 在链接里使用thinkphp的U方法
- Oracle 查询