Android设计模式系列之组合模式

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

以上所述是小编给大家介绍的Android设计模式系列之组合模式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-10-06 12:01:51

Android设计模式系列之组合模式的相关文章

Android设计模式系列之组合模式_Android

Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用.在android UI设计,几乎所有的widget和布局类都依靠这两个类. 组合模式,Composite Pattern,是一个非常巧妙的模式.几乎所有的面向对象系统都应用到了组合模式. 1.意图 将对象View和ViewGroup组合成树形结构以表示"部分-整体"的层次结构(View可以做为ViewGroup的一部分). 组合模式使得用户对单个对象View和组合对象ViewGrou

C# 设计模式系列教程-组合模式_C#教程

1. 概述 将对象组合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性. 2. 解决的问题 当希望忽略单个对象和组合对象的区别,统一使用组合结构中的所有对象(将这种"统一"性封装起来). 3. 组合模式中的角色 3.1 组合部件(Component):它是一个抽象角色,为要组合的对象提供统一的接口. 3.2 叶子(Leaf):在组合中表示子节点对象,叶子节点不能有子节点. 3.3 合成部件(Composite):定义有枝

【设计模式系列】--组合模式

在前面的博文中,小编介绍了三个工厂模式,三世同堂,各司其职,各有千秋,今天我们继续来学习设计模式的相关知识,今天这篇博文,我们继续来学习设计模式的相关知识,今天这篇博文小编主要和小伙伴们来学习组合模式.小编会从什么是组合模式.组合模式的结构图.组合模式的角色和职责以及结合相关的deom来进行讲解. 一.什么是组合模式 组合模式,英文名字叫Composite,是结构型的设计模式,通过递归手段来构造树形的对象结构,并可以通过一个对象来访问整个对象树,将对象组合成树形结构以表示"部分-整体"

Android设计模式系列之工厂方法模式_Android

工厂方法模式,往往是设计模式初学者入门的模式,的确,有人称之为最为典型最具启发效果的模式. android中用到了太多的工厂类,其中有用工厂方法模式的,当然也有很多工厂并不是使用工厂方法模式的,只是工具管理类. 今天以ThreadFactory举例说明一下简单工厂模式和工厂方法模式. 工厂方法模式,Factory Method,简单的方式,不简单的应用. 1.意图 定义一个用于创建对象的接口,让子类决定实例化哪个类.工厂方式模式使一个类的实例化延迟到其子类. 热门词汇:虚构造器 延迟 创建对象

Android设计模式系列之单例模式

单例模式,可以说是GOF的23种设计模式中最简单的一个. 这个模式相对于其他几个模式比较独立,它只负责控制自己的实例化数量单一(而不是考虑为用户产生什么样的实例),很有意思,是一个感觉上很干净的模式,本人很喜欢这个模式. android中很多地方都用到了单例模式,本文以输入法管理者InputMethodManager为例,展开分析. 单例模式,Singleton Pattern,能够以其特有的优势,替代系统中全局变量,应用非常广泛. 1.意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点

深入剖析设计模式中的组合模式应用及在C++中的实现_C 语言

组合模式将对象组合成树形结构以表示"部分-整体"的层次结构.C o m p o s i t e 使得用户对单个对象和组合对象的使用具有一致性. 模式图: 适用场景: 你想表示对象的部分-整体层次结构. 你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象. 举例: namespace FactoryMethod_DesignPattern { using System; using System.Collections; abstract class Compo

【设计模式系列】--策略模式

什么是策略模式 在前面的博文中,小编主要向小伙伴介绍了组合模式,今天这篇博文,我们继续来学习设计模式的相关知识,今天和小伙伴们见面的是策略模式,策略模式英文名字叫Strategy,策略模式属于行为模式的一种,她对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交由客户端决定,策略模式主要用来平滑的处理算法的切换. 策略模式结构图 我们来看一下策略的结构图,如下所示:   对上述结构图进行简单的解释说明:         a

Android设计模式之适配器(Adapter)模式_Android

本文实例为大家分享了Android适配器模式源码,供大家参考,具体内容如下 1. 模式介绍 1.1模式的定义: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 1.2模式的使用场景: 用电源接口做例子,笔记本电脑的电源一般都是接受5V的电压,但是我们生活中的电线电压一般都是220V的输出.这个时候就出现了不匹配的状况,在软件开发中我们称之为接口不兼容,此时就需要适配器来进行一个接口转换.在软件开发中有一句话正好体现了这点:任

JavaScript设计模式系列之原型模式

prototype模式通过实例对象指定需要创建的类型,这与factory method模式有本质不同,factory method模式是通过类的继承定义不同子类来达到创建不同类型对象的目的,属于类模式,prototype模式通过调用组合的对象成员生成不同类型的对象实例,属于对象模式. 由于这个特性,prototype具有以下适用场合: · 需要运行时确定实例化的类时,比如动态装载库时 · 避免创建过多子类时.子类太多永远是不受欢迎的,在factory method中我们也提到通过模板或者参数化来