合成模式-透明的

[关键字]: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怎么新建透明合成、透明质酸合成,以便于您获取更多的相关知识。

时间: 2024-08-20 16:22:17

合成模式-透明的的相关文章

学习php设计模式 php实现合成模式(composite)_php技巧

一.意图 将对象组合成树形结构以表示"部分-整体"的层次结构.Composite使用户对单个对象和组合对象的使用具有一致性. Composite变化的是一个对象的结构和组成.二.合成模式中主要角色抽象组件(Component)角色:抽象角色,给参加组合的对象规定一个接口.在适当的情况下,实现所有类共有接口的缺省行为.声明一个接口用于访问和管理Component的子组件树叶组件(Leaf)角色:在组合中表示叶节点对象,叶节点没有子节点.在组合中定义图元对象的行为.树枝组件(Composi

合成模式-安全的

[关键字]:java,design pattern,设计模式,<Java与模式>学习,composite,合成模式 [环境]:StarUML5.0 + JDK6 [作者]:Winty (wintys@gmail.com) http://www.blogjava.net/wintys/ [正文]: 安全的合成模式 安全的合成模式 package pattern.composite.safe; import java.util.*; /** * 安全的合成模式:Composite Pattern

追MM 之合成模式实现

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/230210 这一周,MM 告诉我要我见一次家长.听说,他们家计划生育执行的很不好,人丁兴旺啊.她爷爷就有10 几个儿子,儿子每个儿子又有很多儿子,儿子也有很多儿子. 要我一口气记下来,不累死才怪.还好ME  我学会了合成模式.把所有对象之间的关系,组建成一个树.只要告诉某个人,我立刻可以遍历出她所有的儿子信息来.   抽

Java与模式:合成模式

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 合成(Composite)模式是一种非常重要的设计模式,合成模式将对象组织到树中,用来描述树的关系.一.原理图从原理图可见,File.Folder都可以同等 看待苇IFile,为对象管理提供了极大的便利.当然,树的概念不单单是文件文件夹的层次概念,只 是因为这个很形象,实际中还有很多树的概念,比如组织机构,分类层次等等,都是逻辑上的概念,不管

绘图,图层与合成模式

在LAYER调色板中,在MODE下拉列表中,有多种模式用于合成.了解这几种模式的作用,对图像的合成有重要的作用.下面进行详细的说明: Normal 模式 : 这是绘图与合成的基本模式,也是一个图层的标准模式.当一个色调和选择的图像区域合成进入到背景中时, Normal模式将下面的象素用增添到图像中的象素取代,这是对背景象素的一个直接替代. 在Normal模式中工作时,在最终确定一个编辑之前可以通过单击并拖动Opacity滑标来改变绘图和选择的不透明度,其中Opacity滑标在合成与合并图层时出现

设计模式c#语言描述——合成(Composite)模式

设计 设计模式c#语言描述--合成(Composite)模式 *本文参考了<JAVA与模式>的部分内容,适合于设计模式的初学者. 合成模型模式属于对象的结构模式,有时又叫做部分-整体模式.合成模式将对象组织到树结构中,可以用来描述整体与部分的关系.合成模式可以使客户端将单纯元素与复合元素同等看待.如文件夹与文件就是合成模式的典型应用.根据模式所实现接口的区别,合成模式可分为安全式和透明式两种. 安全式的合成模式要求管理聚集的方法只出现在树枝构件类中,而不出现在树叶构件类中.类图如下所示: 涉及

设计模式的C++实现之组合模式

解决的问题: 我们PC用到的文件系统,其实就是我们数据结构里的树形结构,我们处理树中的每个节点时,其实 不用考虑他是叶子节点还是根节点,因为他们的成员函数都是一样的,这个就是组合模式的精髓.他模糊了简单元素和复杂 元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦. 将 对象组合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性. 注明:树形结构里的叶子节点也有左右孩子,只不过他的孩子都是空.

C#设计模式之合成设计模式(Composite)

一.合成(Composite)模式 合成模式有时又叫做部分-整体模式(Part-Whole).合成模式将对象组织到树结构中,可以用来描述整体与部分的关系.合成模式可以使客户端将单纯元素与复合元素同等看待. 从和尚的故事谈起 这是小时候我奶奶讲的故事:从前有个山,山里有个庙,庙里有个老和尚在给小和尚讲故事,讲的什么故事呢?从前有个山,山里有个庙--.奶奶的故事要循环多少次,根据你多长时间睡着而定.在故事中有山.有庙.有和尚.有故事.因此,故事的角色有两种:一种里面没有其它角色:另一种内部有其它角色

JAVA23中模式

最近在学习设计模式,无意中在网上看到了这个文章,感觉很有意思,决定有时间把根据这个代码,用代码实现以下,连连. [b:9ceca65206]创建型模式[/b:9ceca65206]  1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说"来四个鸡翅"就行了.麦当劳和肯德基就是生产鸡翅的Factory  工厂模式:客户类和工厂类分开.消费者任何时候需要某种产品,只需向工厂请求即可.消费者无