[关键字]:java,design pattern,设计模式,《Java与模式》学习,Flyweight Pattern,享元模式
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com) http://wintys.blogjava.net
[正文]:
享元模式-单纯享元:
package pattern.flyweight.simple;
import java.util.*;
/**
* 单纯的享元
* @version 2009-6-25
* @author Winty(wintys@gmail.com)
*/
public class SimpleFlyweightTest{
public static void main(String[] args){
FlyweightFactory f = new FlyweightFactory();
Flyweight a = f.factory(new Character('a'));
a.operation("ex");
Flyweight b = f.factory(new Character('b'));
b.operation("ex");
Flyweight c = f.factory(new Character('a'));
c.operation("ex");
f.checkFlyweight();
}
}
/**
* 抽象享元
*/
abstract class Flyweight{
public abstract void operation(String extrinsicState);
}
/**
* 具体享元
*/
class ConcreteFlyweight extends Flyweight{
private Character intrinsicState;
public ConcreteFlyweight(Character intrinsicState){
this.intrinsicState = intrinsicState;
}
/**
* 外蕴状态改变方法行为,但不会改变内蕴状态
*/
@Override
public void operation(String extrinsicState){
String str = "intrinsic:" + intrinsicState;
str += " extrinsic:" + extrinsicState;
System.out.println(str);
}
}
/**
* 享元工厂
*/
class FlyweightFactory{
private Map<Character , Flyweight> map;
public FlyweightFactory(){
map = new HashMap<Character , Flyweight>();
}
public Flyweight factory(Character state){
Flyweight flyweight = null;
if(map.containsKey(state)){
flyweight = map.get(state);
}
else{
flyweight = new ConcreteFlyweight(state);
map.put(state , flyweight);
}
return flyweight;
}
/**
* 辅助方法
*/
public void checkFlyweight(){
Iterator<Map.Entry<Character , Flyweight>> it
= map.entrySet().iterator();
System.out.println("check flyweight:");
while(it.hasNext()){
Map.Entry<Character , Flyweight> entry = it.next();
Character key = entry.getKey();
System.out.println("key:" + key);
}
}
}
运行结果:
intrinsic:a extrinsic:ex
intrinsic:b extrinsic:ex
intrinsic:a extrinsic:ex
check flyweight:
key:b
key:a
- 大小: 44.9 KB
分享到:
相关推荐
具体到这个“2 享元模式-课程内容.rar”文件中的MOOC课程内容,可能包含了以下几个知识点: 1. **享元模式的概念**:解释什么是享元模式,以及它如何通过对象共享来提高性能。 2. **内部状态与外部状态**:详细...
享元模式的标准定义代码,以及一个五子棋的示例代码。
享元模式是一种结构型设计模式,它通过共享已有对象来减少内存中对象的数量,从而达到降低系统内存占用、提高性能的目的。在软件工程中,当系统中存在大量相似或重复的对象时,享元模式尤为适用。 享元模式的核心是...
JAVA-设计模式-结构型模式-享元模式
设计模式--享元模式
设计模式-享元模式 设计模式是软件设计中的一种解决方案,旨在提高代码的可维护性、灵活性和可重用性。享元模式(Flyweight Pattern)是结构型模式的一种,主要用于减少大量相似对象的内存占用,提高系统的性能和...
享元模式是一种软件设计模式,它的主要目的是为了提高性能,减少对象的创建,尤其是在大量相似对象需要被创建的情况下。在给定的咖啡店案例中,享元模式的应用可以帮助优化内存使用,避免为每杯咖啡的配料表分配独立...
java常用设计模式-享元模式
Java中的享元设计模式对于优化内存使用和提高应用程序性能至关重要。通过最小化创建的对象数量,它显著减少了内存占用。享元模式的主要目标是在相似对象之间尽可能多地共享数据,从而提高效率和性能。 ## 二、详细...
享元模式是一种结构型设计模式,它通过共享已有对象来减少系统中对象的数量,从而达到降低内存占用的目的。在软件工程中,当一个系统需要处理大量相似对象时,享元模式能够有效地提升性能,尤其在处理轻量级对象时...
享元模式通常与Flyweight接口、Concrete Flyweight(具体享元)、Flyweight Factory(享元工厂)三个角色一起工作,工厂负责创建和管理享元对象,确保享元对象的复用,避免因创建过多的实例导致内存开销过大。...
享元模式是软件设计模式中的一种结构型模式,它的核心思想是通过共享已经存在的对象来减少内存中的对象数量,从而提高系统性能。在Java中,享元模式常用于处理大量相似对象的场景,例如在图形界面中绘制大量相似的...
- 组合模式(Composite):复合享元模式实际上是单纯享元模式与合成模式的组合,允许树叶节点作为单纯享元对象进行共享,而树枝节点作为复合享元对象存在。 六、享元模式PHP示例代码 在PHP中实现享元模式的示例代码...
享元模式是一种优化资源利用的设计模式,主要用于减少创建和管理对象的数量,以达到节省内存的目的。在软件工程中,尤其是在处理大量相似对象时,享元模式能够显著提高系统的性能。享元模式通过共享那些可以共享的...
在享元模式中可以共享的相同内容称为内部状态(Intrinsic State),而那些需要外部环境来设置的不能共享的内容称为外部状态(Extrinsic State),由于区分了内部状态和外部状态,因此可以通过设置不同的外部状态使得相同...
说明: 享元模式分单纯(共享)享元模式,以及组合(不共享)享元模式,有共享跟不共享之分;单纯享元模式,只包含共享的状态,可共享状态是不可变,不可修改的,这是享元的内部状态;当然有外部状态就有外部状态,...
享元模式是一种结构型设计模式,它通过共享已有对象来减少系统中对象的数量,从而达到降低内存消耗和提高性能的目的。在Java编程中,享元模式通常用于处理大量相似对象的场景,例如在图形界面、文本渲染或者数据库...
享元模式是一种优化资源使用的软件设计模式,尤其适用于大量对象的场景,通过共享技术来有效支持大量细粒度的对象。这种模式的核心在于减少内存中对象的数量,以提高系统性能。在"最简单的简单享元模式"中,我们将...
设计模式中的享原模式技术入门,可用于各种说明场合,一看就会哦
装饰器模式、原型模式和享元模式是软件设计模式中的三种重要模式,它们在实际项目开发中被广泛应用,以提高系统的性能和可维护性。下面将详细解释这三种设计模式的概念、应用场景及其实现方式。 **装饰器模式...