21-享元模式
2023-10-02 14:14:54 0 举报
设计模式,享元模式,设计模式UML类图,GoF23种设计模式
作者其他创作
大纲/内容
所有具体享元类的超类或接口,通过这个接口,Flyweight可以接受并作用于外部状态
指那些不需要共享的Flyweight子类。因为Flyweight接口共享成为可能,但它并不强制共享
享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。
享元模式(Flyweight)结构图
继承Flyweight超类或实现Flyweight接口,并为内部状态增加存储空间
AbstractFlyweight
+ operation(int extrinsicstate)
ConcreteFlyweight1
UnsharedConcreteFlyweight
享元模式可以避免大量非常相类似的开销。在程序设计过程中,有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例除了几个参数外基本上都是相同的,有时就能够大幅度地减少需要实例化的类的数量。如果能把那些参数移到类实例的外面,在方法调用时将它们传递进来,就可以通过共享大幅度地减少单个实例的数目。应用:1、如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时就应该考虑使用享元模式。2、对象的大多数状态可以是外部状态,如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多对象,此时可以考虑使用享元模式。Java中,字符串String就是运用了Flyweight模式举个栗子:'=='可以用来确定两个对象是否是相同的实例,当用new String()方法时,两个对象的引用地址是不同的,但当使用赋值时,两个字符串的引用地址竟然是相同的。String titleA=new String(\"ABC\");String titleB=new String(\"ABC\");titleA==titleB falsetitleA.equals(titleB) trueString titleC=\"ABC\";String titleD=\"ABC\";titleA==titleB truetitleA.equals(titleB) true
FlyweightFactory
+ getFlyweight(String key):Flyweight
一个享元工厂,用来创建并管理Flyweight,当用户请求一个Flyweight时,FlyweightFactory对象提供一个已创建的实例或者创建一个(如果不在的的话)
0 条评论
下一页