首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

java设计模式-组合模式(合成模式 Composite)-2

java设计模式-组合模式(合成模式 Composite)-2

客户端类

    public class Client {
        public static void main(String[] args) {
            Composite root = new Composite("服装");
            Composite c1 = new Composite("男装");
            Composite c2 = new Composite("女装");
            
            Leaf leaf1 = new Leaf("衬衫");
            Leaf leaf2 = new Leaf("夹克");
            Leaf leaf3 = new Leaf("裙子");
            Leaf leaf4 = new Leaf("套装");
            
            root.addChild(c1);
            root.addChild(c2);
            c1.addChild(leaf1);
            c1.addChild(leaf2);
            c2.addChild(leaf3);
            c2.addChild(leaf4);
            
            root.printStruct("");
        }
    }

可以看出,树枝构件类Composite给出了add()、remove()、以及getChild()等方法的声明和实现,而树叶构件类则没有给出这些方法的声明或实现。这样的做法是安全的做法,由于这个特点,客户端应用程序不可能错误的调用树叶构件的聚集方法,因为树叶构件没有这些方法,调用会导致编译错误。

安全式组合模式的缺点是不够透明,因为树叶类和树枝类将具有不同的接口。
返回列表