26.享元模式
来源:互联网 发布:java商城分销系统源码 编辑:程序博客网 时间:2024/06/07 04:44
package flyweightPattern;import java.util.Hashtable;/* * 享元模式: * 主要用于减少创建对象的数量,以减少内存占用和提高性能。 * 也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。 * 这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 * 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。 * *享元不是单利:单利模式是一个类只能有一个实例 但是享元模式的一个类可以有多个实例 * * * */public class FlyweightPattern {public static void main(String[] args) {//工厂实例FlyweightFactory factory = new FlyweightFactory();//创建一个xxxFlyweight xxx = factory.getFlyweight("xxx");xxx.Opration();//创建一个yyyFlyweight yyy = factory.getFlyweight("yyy");yyy.Opration();//创建一个zzzFlyweight zzz = factory.getFlyweight("zzz");zzz.Opration();//再创建一个xxxFlyweight xxx2 = factory.getFlyweight("xxx");xxx2.Opration();System.out.println("工厂中一共存了:"+factory.GetCount()+"个对象!");}}/* * 所有享元体的父类或接口 可以接受并作用于外部状态 */abstract class Flyweight{ protected String name;public Flyweight(String name){this.name = name;}public abstract void Opration(); }/* * 享元类 */class ConcreteFlyweight extends Flyweight{public ConcreteFlyweight(String name) {super(name);}//操作public void Opration() {System.out.println("享元:"+name);}}/* * 享元类 */class NFlyweight extends Flyweight{public NFlyweight(String name) {super(name);}//操作public void Opration() {System.out.println("不需要享元:"+name);}}/* * 享元产生的工厂类 */class FlyweightFactory{private Hashtable<String, Flyweight> flys = new Hashtable<>();public Flyweight getFlyweight(String name){if(!flys.contains(name))flys.put(name,new ConcreteFlyweight(name));return flys.get(name);}public int GetCount(){return flys.size();}}
阅读全文
0 0
- 26.享元模式
- 深入浅出享元模式
- 享元模式
- 享元(FlyWeight)模式
- 享元模式
- 享元模式
- 享元模式
- 享元模式
- 享元模式Flyweight
- 享元模式
- 享元模式
- 享元模式
- FlyWeight 享元模式
- 享元模式(Flyweight)
- 享元模式
- 享元模式
- 享元模式
- 享元模式
- 25.中介模式
- 19. Remove Nth Node From End of List-python
- hodoop集群环境搭建----伪分布模式(Pseudodistributed mode)
- 计算机网络--概述
- cannot load oci dll,193/87-navicate连接oracle的解决方法
- 26.享元模式
- [LeetCode 解题报告]013. Roman to Integer
- 解决mybatis在xml映射文件里面写sql时候没有提示
- 基于Bmob的在线群聊之功能概述和注册登录功能
- Leetcode 8. String to Integer (atoi)
- HTML5 简介与安装
- leetcode -- 566. Reshape the Matrix 【矩阵转换 + 不同数组下标映射】
- centos下yum安装mysql
- 10017---Spring中的事务管理