[关键字]:java,design pattern,设计模式,《Java与模式》学习,composite,合成模式
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com) http://www.blogjava.net/wintys/
[正文]:
透明的合成模式
package pattern.composite.transparent; import java.util.*; /** * 透明的合成模式:Composite Pattern * @version 2009-6-3 * @author Winty(wintys@gmail.com) */ public class TransparentCompositeTest{ public static void main(String[] args){ Graphics g1 , g2; Graphics p1 , p2; g1 = new Line(); g2 = new Circle(); p1 = new Picture(); p2 = new Picture(); g1.draw(); g2.draw(); System.out.println(""); p1.add(g1); p1.add(g2); p1.draw(); System.out.println(""); p2.add(g1); p2.add(g2); p2.add(p1); p2.draw(); } } /** * 抽象Component角色 */ interface Graphics{ void draw(); void add(Graphics g); void remove(int i); Graphics getChild(int i); } /** * Leaf角色 */ class Line implements Graphics{ @Override public void draw(){ System.out.println("draw a line"); } @Override public void add(Graphics g){ } @Override public void remove(int i){ } @Override public Graphics getChild(int i){ return null; } } /** * Leaf角色 */ class Circle implements Graphics{ @Override public void draw(){ System.out.println("draw a circle"); } @Override public void add(Graphics g){ } @Override public void remove(int i){ } @Override public Graphics getChild(int i){ return null; } } /** * Composite角色 */ class Picture implements Graphics{ private List<Graphics> graphics; public Picture(){ graphics = new ArrayList<Graphics>(); } @Override public void draw(){ Iterator<Graphics> it = graphics.iterator(); while(it.hasNext()){ Graphics g = it.next(); g.draw(); } } @Override public void add(Graphics g){ graphics.add(g); } @Override public void remove(int i){ graphics.remove(i); } @Override public Graphics getChild(int i){ return graphics.get(i); } }
运行结果:
draw a line
draw a circle
draw a line
draw a circle
draw a line
draw a circle
draw a line
draw a circle
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索graphics
, override
, public
, graphics idget
, draw
, Graphics g =
, #Graphics
, @override
void
透明披风怎么合成、ae新建透明合成、透明合成纸、ae怎么新建透明合成、透明质酸合成,以便于您获取更多的相关知识。