• 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).使你的设计变得更加一般化。
     


     


     

  • 相关阅读:
    SpringMvc完成ajax功能
    接收的参数为日期类型
    Mybatis的逆向工程(generator)以及分页助手(pageHelper)
    springMVC静态资源的映射
    Mybatis框架
    写一个简单的SpringMvc的demo
    SpringMvc流程
    controller进行数据保存以及如何进行重定向跳转
    我爱C语言
    三列布局中有两列内容固定
  • 原文地址:https://www.cnblogs.com/qianxudetianxia/p/2121488.html
Copyright © 2020-2023  润新知