menbbo

导航

 

介绍

属于结构型模式,主要用于减少创建对象的数量,以减少内存占用和提高性能;

享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。

应用场景

java中的String,如果字符串常量池有则返回,没有则创建一个字符串保存在常量池中;

数据库连接池、线程池等;

如果系统中有大量相似的对象的时候可以使用享元模式。

内部状态

不会随环境的改变而有所不同,是可以共享的;

外部状态

不可以共享,会随着环境的改变而改变;

角色

抽象享元角色:为具体享元角色规定了必须实现的方法,而外部状态是以参数的形式通过此方法传入;

具体享元角色:实现抽象享元角色规定的方法,如果存在内部状态,就负责为内部状态提供存储空间;

享元工厂 角色:负责创建和管理享元角色。

客户端角色:维护对所有享元对象的引用,而且还需要存储对应的外部状态。

优点

大大减少了对象的创建,降低了程序内存的占用,提高效率

缺点

提高了系统复杂度,要分离出内部状态和外部状态

享元设计模式与单例模式、原型模式的区别

单例模式是保证一个类只有一个对象实例;

原型设计模式是指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。

 

posted on 2022-03-05 17:05  menbbo  阅读(32)  评论(0编辑  收藏  举报