【2016-10-15】【坚持学习】【Day6】【组合模式】

哈哈,今天偷懒了,在晚上只看了一个组合模式。

例子:

树结构,有一些是树节点,一些是叶子节点。

比如,文件夹树结构,一个是文件夹节点,一个是文件节点,虽然都是树的节点,但是具体的业务肯定是区别的。

代码:

abstract class Component
    {
        public abstract void Add(Component c); //增加成员
        public abstract void Remove(Component c); //删除成员
        public abstract Component GetChild(int i); //获取成员
        public abstract void Operation();  //业务方法
    }

    class Leaf : Component
    {
        public override void Add(Component c)
        {
            //异常处理或错误提示
        }

        public override void Remove(Component c)
        {
            //异常处理或错误提示
        }

        public override Component GetChild(int i)
        {
            //异常处理或错误提示
            return null;
        }

        public override void Operation()
        {
            //叶子构件具体业务方法的实现
        }
    }

    class Composite : Component
    {
        private List<Component> list = new List<Component>();

        public override void Add(Component c)
        {
            list.Add(c);
        }

        public override void Remove(Component c)
        {
            list.Remove(c);
        }

        public override Component GetChild(int i)
        {
            return (Component)list[i];
        }

        public override void Operation()
        {
            //容器构件具体业务方法的实现,将递归调用成员构件的业务方法
            foreach (Object obj in list)
            {
                ((Component)obj).Operation();
            }
        }
    }
时间: 2024-10-09 22:11:23

【2016-10-15】【坚持学习】【Day6】【组合模式】的相关文章

数据库学习设计模式--组合模式

介绍: 想必你已经了解了数据结构中的树,ok,组合模式对于你就是一会儿的功夫了.组合模式相对来说比较简单.看一下定义 abstract class Component { protected String name; //这个用来标示一下节点 public Component(String name) { this.name = name; } public abstract void add(Component c);//增加儿子节点 public abstract void remove(C

跟着ZHONGHuan学习设计模式--组合模式

跟着ZHONGHuan学习设计模式 组合模式 介绍: 想必你已经了解了数据结构中的树,ok,组合模式对于你就是一会儿的功夫了.组合模式相对来说比较简单.看一下定义 组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构.使得用户对单个对象和组合对象的使用具有一致性. 暂时没有想到好的例子,如果你有,请告诉我.下面我用树来对组合模式进行解释.树的结构是下面的这样的: 没棵树有一个根节点,也有叶子节点和树枝节点,一些结构都是用树结构表示的,例如树形菜单,文件和文件夹目录.那么如何存储管理这样的

设计模式学习笔记——组合模式

组合模式 组合模式,将对象组合合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性. 代码实现 接口声明Component /** * 接口声明 * @author xukai 2016年3月26日 下午4:58:37 * */ public abstract class Component { protected String name; public Component(String name) { this.name = name; }

JAVA设计模式(10):结构型-组合模式(Composite)

先看看组合模式的定义吧:"将对象组合成树形结构以表示'部分-整体'的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性." /** * 抽象组件 */ public interface Component { void operation(); } /** * 叶子组件 */ interface Leaf extends Component{ } /** * 容器组件 */ interface Composite extends Component{ } public in

设计模式学习心得&lt;组合模式 Composite&gt;

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式,它创建了对象组的树形结构. 这种模式创建了一个包含自己对象组的类.该类提供了修改相同对象组的方式. 概述 意图 将对象组合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性. 主要解决 它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客

设计模式学习笔记--组合模式

1 using System; 2 3 namespace Composite 4 { 5 /// <summary> 6 /// 作者:bzyzhang 7 /// 时间:2016/5/30 7:11:10 8 /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9 /// Component说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10 /// </summary> 11 public abstract cl

2016.10.24 继续学习

今天继续学习,进入面向对象的学习. 1.输出换行可以这样输出 System.out.println(); 2.数组学得有点蒙.... public class PracMultiArray { public static void main(String[] args) { int[][] a1 = {{1, 2, 4}, {3, 1, 2}, {14, 5, 3}}; System.out.println(a1[1][2]); for(int i=0;i<a1.length;i++){ for

2016.10.30 济南学习 Day2 下午 T1

他 [问题描述] 一张长度为??的纸带,我们可以从左至右编号为0 ? ??(纸带最左端标号为 0).现在有??次操作,每次将纸带沿着某个位置进行折叠,问所有操作之后纸带 的长度是多少. [输入格式] 第一行两个数字??, ??如题意所述. 接下来一行??个整数代表每次折叠的位置. [输出格式] 一行一个整数代表答案. [样例输入] 5 2 3 5 [样例输出] 2 [样例解释] 树上有只鸟. [数据规模与约定] 对于60%的数据,??, ?? ≤ 3000. 对于100%的数据,?? ≤ 101

2016.10.26 继续学习

今天继续学习面向对象部分 1.static的使用 静态方法不能访问非静态变量 非静态方法可以访问静态变量 a.静态变量 public class PracStaticParam { int id = 0; static int num = 0; PracStaticParam(int x) { this.id = x; num++; } public static void main(String[] args) { PracStaticParam s1 = new PracStaticPara

2016.10.15 继续努力

两天时间上手monkeyrunner,感觉还是欠缺很多,赶紧把要点记下来先. 写一个脚本来做范例 #导入monkeyrunner模块 from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage #连接手机,"d"可以随意命名,有两个参数,一个是等待时间,一个是设备的SN号 d = MonkeyRunner.waitForConnection(5.0,'SN') #安装APK d.installPa