java设计模式_享元模式
来源:互联网 发布:360云盘 linux客户端 编辑:程序博客网 时间:2024/06/05 11:21
一、什么是享元模式
Flyweight模式也叫享元模式,是构造型模式之 一,它通过与其他类似对象共享数据来减小内存 占用。
二、享元模式的结构
三、享元模式的角色和职责
抽象享元角色:
所有具体享元类的父类,规定一些需要实现的公共接口。 具体享元角色:
抽象享元角色的具体实现类,并实现了抽象享元角色规定的方法。 享元工厂角色: 负责创建和管理享元角色。
//示例1:public class MyCharacter {//享元角色 private char mychar; public MyCharacter(char mychar) { this.mychar = mychar; } public void display() { System.out.println(mychar); }}import java.util.HashMap;import java.util.Map;public class MyCharacterFactory {//享元工厂 private Map<Character,MyCharacter> pool; public MyCharacterFactory() { pool = new HashMap<>(); } public MyCharacter getMyCharacter(Character character) { MyCharacter myChar = pool.get(character); if(myChar == null) { myChar = new MyCharacter(character); pool.put(character, myChar); } return myChar; }}public class MainClass { public static void main(String[] args) {/* MyCharacter m1 = new MyCharacter('a'); MyCharacter m2 = new MyCharacter('b'); MyCharacter m3 = new MyCharacter('a'); MyCharacter m4 = new MyCharacter('d'); m1.display(); m2.display(); m3.display(); m4.display(); if(m1 == m3) { System.out.println("true"); } else { System.out.println("false"); }*/ /* //a //b //a //d //true // */ //1.创建MyCharacter工厂 MyCharacterFactory factory = new MyCharacterFactory(); //2.从工厂中取出相应的MyCharacter MyCharacter m1 = factory.getMyCharacter('a'); MyCharacter m2 = factory.getMyCharacter('b'); MyCharacter m3 = factory.getMyCharacter('a'); MyCharacter m4 = factory.getMyCharacter('d'); m1.display(); m2.display(); m3.display(); m4.display(); if(m1 == m3) { System.out.println("true"); } else { System.out.println("false"); } }}//a//b//a//d//true////示例2:public class Teacher { private String number; public void setNumber(String number) { this.number = number; } public String getNumber() { return number; } public Teacher(){ super(); }}import java.util.HashMap;import java.util.Map;public class TeacherFactory { public Map<String,Teacher> pool; public TeacherFactory() { pool = new HashMap<>(); } public Teacher getTeacher(String number) { Teacher teacher = pool.get(number); if(teacher == null) { teacher = new Teacher(); teacher.setNumber(number); pool.put(number, teacher); } return teacher; }}public class MainClass { public static void main(String[] args) { TeacherFactory factory = new TeacherFactory(); Teacher teacher1 = factory.getTeacher("0102034"); Teacher teacher2 = factory.getTeacher("0102035"); Teacher teacher3 = factory.getTeacher("0102034"); Teacher teacher4 = factory.getTeacher("0102037"); System.out.println(teacher1.getNumber()); System.out.println(teacher2.getNumber()); System.out.println(teacher3.getNumber()); System.out.println(teacher4.getNumber()); if(teacher1 == teacher3) { System.out.println("true"); } else System.out.println("false"); }}//0102034//0102035//0102034//0102037//true
0 0
- java设计模式_享元模式
- Java设计模式_(结构型)_享元模式
- java设计模式13_享元模式
- 大话设计模式_享元模式
- 设计模式_享元模式
- 设计模式_享元模式
- 设计模式_享元模式(15)
- Java设计模式_结构型_享元模式_实现单元的共享
- Integer注意_享元设计模式
- JAVA-享元设计模式
- java享元设计模式
- Java设计模式-----FlyWeight享元模式
- Java 享元模式(Flyweight) 设计模式
- Java设计模式-----FlyWeight享元模式
- java设计模式之享元模式
- JAVA设计模式之享元模式
- java设计模式之享元模式
- java设计模式---享元模式
- 码神有感
- 华为OJ 初级:输出单向链表中倒数第k个结点
- HDOJ 5763 (2016多校联合训练 Training Contest 4) Another Meaning
- keil c 常见错误和警告
- 阿里云centOs下搭建Web应用步骤
- java设计模式_享元模式
- webApi——传参详解
- x86分页机制——《x86汇编语言:从实模式到保护模式》读书笔记42
- java基础目录
- 第三章:linear models for regression exericse 1-7
- 数组的四种排序方式
- Composer:Failed to execute git clone --mirror ...Permission denied (publickey). fatal: Could not
- Codeforces Round #105 (Div. 2) C 构造
- HDU 4691 Front Compression [后缀数组] [LCP]