zoukankan      html  css  js  c++  java
  • Android设计模式系列(1)SDK源码之组合模式

    Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用。在android UI设计,几乎所有的widget和布局类都依靠这两个类。
    组合模式,Composite Pattern,是一个非常巧妙的模式。几乎所有的面向对象系统都应用到了组合模式。

    1.意图
    将对象View和ViewGroup组合成树形结构以表示"部分-整体"的层次结构(View可以做为ViewGroup的一部分)。
    组合模式使得用户对单个对象View和组合对象ViewGroup的使用具有一致性。
    热点词汇: 部分-整体 容器-内容 树形结构 一致性 叶子 合成 安全性 透明性

    2.结构

    针对View和ViewGroup的实际情况,我们选择安全式的组合模式(在组合对象中添加add,remove,getChild方法),添加少许的注释,我们把上图修改为:

    3.代码
    View类的实现:

    public class View{
            //... ...
            //省略了无关的方法
    }
    

    ViewGroup的实现:

    public abstract class ViewGroup extends View{
        /**
         * Adds a child view. 
         */
        public void addView(View child) {
            //...
        }
    
        public void removeView(View view) {
            //...
        }
    
        /**
         * Returns the view at the specified position in the group.
         */
        public View getChildAt(int index) {
            try {
                return mChildren[index];
            } catch (IndexOutOfBoundsException ex) {
                return null;
            }
        }
    
        //other methods
    }
    

    4.效果
    (1).结构型模式
    (2).定义了包含基本对象和组合对象的类层次结构。这种结构能够灵活控制基本对象与组合对象的使用。
    (3).简化客户代码。基本对象和组合对象有一致性,用户不用区分它们。
    (4).使得更容易添加新类型的组件。
    (5).使你的设计变得更加一般化。
     


     


     

  • 相关阅读:
    第17章 委托
    第16章 数组
    第15章 枚举类型和位标志
    第14章 字符、字符串和文本处理
    第13章 接口
    第12章 泛型
    第10章 属性
    第11章 事件
    内部类(转载)
    Collections.sort的三种用法
  • 原文地址:https://www.cnblogs.com/qianxudetianxia/p/2121488.html
Copyright © 2011-2022 走看看