享元模式
Posted feiqiangsheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了享元模式相关的知识,希望对你有一定的参考价值。
模式介绍
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。
模式优点
1、大大减少对象的创建,降低系统的内存,使效率提高。
模式缺点
1、提高了系统的复杂度,需要分离出外部状态和内部状态,而且外部状态具有固有化的性质,不应该随着内部状态的变化而变化,否则会造成系统的混乱。
使用场景
1、系统有大量相似对象。
2、需要缓冲池的场景。
系统建模
网站外包,网站的发布形式有多种且具有固有化的性值。
系统实现
/**
* 网站抽象类
*/
public abstract class WebSite {
public abstract void use();
}
/**
* 网站实例
*/
public class ConcreteWebSit extends WebSite {
private String webType = "";
public ConcreteWebSit(String type){
this.webType = type;
}
public void use() {
System.out.println("网站的样式是:" + webType);
}
}
/**
* 网站工厂
*/
public class WebSitFactory {
private static HashMap<String, WebSite> pool = new HashMap<>();
public static WebSite getWebSit(String webSitType){
if (!pool.containsKey(webSitType)) {
WebSite webSite = new ConcreteWebSit(webSitType);
pool.put(webSitType, webSite);
return webSite;
} else {
return pool.get(webSitType);
}
}
}
/**
* 客户端
*/
public class Client {
public static void main(String args[]){
String webType1 = "清洁版";
String webType2 = "高清版";
WebSite webSite1 = WebSitFactory.getWebSit(webType1);
WebSite webSite2 = WebSitFactory.getWebSit(webType2);
webSite1.use();
webSite2.use();
}
}
结果:
网站的样式是:清洁版
网站的样式是:高清版
以上是关于享元模式的主要内容,如果未能解决你的问题,请参考以下文章