JAVA设计模式―享元模式(二)

2014-11-24 08:59:06 · 作者: · 浏览: 1
per();
this.size = size;
this.c = c;
}
}
package flyWeight;
/**
*描述:客户端 为了简单 就直接写main方法里的
*/
public class Client {
public static void main(String[] args) {
Row r =new Row();
GlyphFactory factory = new GlyphFactory();
Context context1= new Context(12, 'a');
Glyph gly1 = factory.getGlyph(context1);
r.setCharacter(gly1);
Context context2= new Context(13, 'a');
Glyph gly2 = factory.getGlyph(context2);
r.setCharacter(gly2);
Context context3= new Context(13, 'b');
Glyph gly3 = factory.getGlyph(context3);
r.setCharacter(gly3);
System.out.println(r.getRow());
}
}
运行结果:
a被创建!
12号a被画出!
13号a被画出!
b被创建!
13号b被画出!
aab
可以看出a创建了一次 ,a的大小12 ,13是外部状态所以是外部传入,外部状态不能在享元内保存,而a字符是内部状态,行Row是有字符Character 组成,Row虽然实现了抽象享元接口,但是并没有再工厂中体现共享,因为他是不可共享的享元。