设计模式回顾系列文章:主要针对工作中常用常见的设计模式进行整理、总结,同时分享以供大家拍砖。
------------------------------------------------
享元模式(Flyweight)
运用共享技术有效地支持大量细粒度的对象。
适用于:
一个应用程序使用了大量的对象,完全由于使用大量的对象,造成很大的存储开销。
对象的大多数状态都可变为外部状态。
如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。
应用程序不依赖于对象标识。由于Flyweight对象可以被共享,对于概念上明显有别的对象,标识测试将返回真值。
程序实现:
下面的程序举个例子,把祝福短信存储在手机里面,在需要发送的时候只要后面加上名字就行了(不知是否恰当)。
抽象类:
//Flyweight
public abstract class SMS {
abstract public void sendMessage(String personName);
}
实现类:
public class BirthdayMessage extends SMS{
@Override
public void sendMessage(String personName){
System.out.println("Happy Birthday!"+personName+"!");
}
}
public class SpringFestivalMessage extends SMS{
@Override
public void sendMessage(String personName) {
System.out.println("Happy Spring Festival!"+personName+"!");
}
}
享元工厂:
//FlyweightFactory
public class MessageFactory {
private List<SMS> pool = new ArrayList<SMS>();
public MessageFactory(){
pool.add(new SpringFestivalMessage());
pool.add(new BirthdayMessage());
}
//getFlyweight
public SMS getMessage(String key){
if("SpringFestival".equalsIgnoreCase(key)){
return pool.get(0);
}else{
return pool.get(1);
}
}
}
客户端调用:
public static void main(String[] args){
MessageFactory mf = new MessageFactory();
SMS sms = mf.getMessage("SpringFestival");
sms.sendMessage("Tom");
sms.sendMessage("Jerry");
sms = mf.getMessage("Birthday");
sms.sendMessage("Tom");
sms.sendMessage("Jerry");
}
举例:棋类程序中的棋子,和输入法程序中的汉字,都可以认为使用享元模式实现。
分享到:
相关推荐
C#面向对象设计模式纵横谈(12):Flyweight 享元模式(结构型模式) (Level 300)
设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx
C#面向对象设计模式纵横谈(12):Flyweight 享元模式(结构型模式)
设计模式 Flyweight
设计模式(C#)之享元模式(Flyweight Pattern),运用共享技术有效地支持大量细粒度的对象。
C++设计模式课件13_Flyweight_享元模式.pdf
主要为大家详细介绍了C++设计模式之享元模式Flyweight,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
设计模式之Flyweight(享元) 行为模式: 设计模式之Template 设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy...
设计模式之Flyweight(享元) 行为模式: 设计模式之Template 设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy...
6共享元模式(Flyweight) 用意:以共享的方式高效地支持大量的细粒度对象
C#面向对象设计模式纵横谈(12):Flyweight 享元模式(结构型模式) C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式) C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) ...
享元模式英文称为“Flyweight Pattern”,我非常感谢将Flyweight Pattern翻译成享元模式的那位强人,因为这个词将这个模式使用的方式明白得表示了出来;如果翻译成为羽量级模式或者蝇量级模式等等,虽然可以含蓄的...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第12节:结构型模式Flyweight享元模式
NULL 博文链接:https://wy649898543.iteye.com/blog/1436293
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。
NULL 博文链接:https://hnzhoujunmei.iteye.com/blog/1033359
36种最新设计模式整理 Design Pattern: Simple Factory 模式 Design Pattern: Abstract Factory 模式 Design Pattern: Builder 模式 Design Pattern: Factory Method 模式 Design Pattern: Prototype 模式 ...
主要介绍了C++设计模式编程的Flyweight享元模式结构,享元模式在实现过程中主要是要为共享对象提供一个存放的"仓库"(对象池),需要的朋友可以参考下
结构模式:设计模式之Facade(外观),设计模式之Proxy(代理),设计模式之Adapter(适配器),设计模式之Composite(组合),设计模式之Decorator(油漆工),设计模式之Bridge,设计模式之Flyweight(享元). 行为模式:设计模式之...
FlyWeight享元 --- 对象结构型模式