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设计模式系列(2)--SDK源码之观察者模式.pdf
本篇文章介绍了,基于Android设计模式之--SDK源码之策略模式的详解。需要的朋友参考下
策略模式其实特别简单(听到这句话,大家是不是心里一下子放松了?)。比如排序,官方告诉大家...1. 意图定义一系列的算法,把它们一个个封装起来,并且使它们可互相替换。策略模式使得算法可独立于使用它的客户而变化
Google Android SDK开发范例大全(完整版) 包含部分书中源码 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 ...
本项目是PHPHub 社区非官方 Android 客户端, App UI 风格遵循了 Google Material Design 设计风格, 项目架构使用了 MVP 模式, 数据处理使用了 RxJava Retrofit 技术。 项目特点: 界面设计遵循 Google 设计规范 ...
适用于Android的Alan语音助手SDK • •••• 快速向您的应用添加语音。 创建语音助手或使用两种输入模式(语音和手势)同步工作来构建多模式界面。艾伦(Alan)是语音AI平台Alan是一个对话式语音AI平台,可让您为您...
第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android...
android源码中包含了大量的设计模式, 除此以外, android sdk还精心为我们设计了各种helper类, 对于和我一样渴望水平得到进阶的人来说, 都太值得一读了。 这不, 前几天为了了解android的消息处理机制, 我看 了...
第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android开发环境搭建 2.1 ...
第1章 Android操作系统概述 1 1.1 Android历史介绍 1 1.2 Android架构 1 1.3 Android平台介绍 2 1.4 现有智能手机操作系统比较 4 第2章 Android开发环境搭建 5 2.1 Eclipse和ADT插件 5 2.1.1 Eclipse安装 5 ...
该项目通过分析Android系统中的设计模式来提升大家对设计模式的理解,从内核的角度来剖析既增加了对Android系统本身的了解,也从优秀的设计中领悟模式的实际运用以及它适用的场景,避免在实际开发中的生搬硬套。...
在源码方面,该系统使用了MVC架构模式,将用户界面层(UI)与业务逻辑层(BLL)分离开来。其中,用户界面层使用了Android自带的XML布局编辑器进行设计,而业务逻辑层则使用了Java语言编写的Service类进行处理。此外,该...
Android期末设计报告 Android期末设计报告全文共9页,当前为第1页。Android期末设计报告全文共9页,当前为第1页。教学单位 计算机学院 Android期末设计报告全文共9页,当前为第1页。 Android期末设计报告全文共9页,...
基于DCT算法的水印嵌入和提取的移动智能终端数字图像证据系统Android APP源码(水印载体形式包括二维码和图片两种,在简易模式下,水印信息仅包括IMEI;水印信息包括地点、时间、IMEI、Android ID).zip # ...
因为时间比较紧张,8 天的时间完成 环信客服模块 的接入,就直接用了环信提供的 UI 控件,但是一些细节的部分, UI 还是会给出设计图,按照设计图完成最终效果。 UI那边直接让我参考 IOS的实现效果: 最终效果 源码...
采用 MVP 设计模式,充分解耦,在代码阅读、后期维护上有很好的体验 由于新浪暂停对第三方微博的审核,所以未能通过应用审核,获取更多权限,来完成后续开发,当然也是不能直接运行的 所以想要运行项目的同学,可以...
Android使用基本的MVC模式,尽可能的写得简单,因为主要还是学习后端,后端使用流行的SpringBoot+Mybatis框架,设计一个可扩展分布式架构。 storeClient安卓端 技术 说明 okgo 优秀的网络请求框架 autosize 屏幕适配...
pdf(3) chm(3) java(2) android(2) 设计(1) jsp(1) jsp语法(1) 第二版(1) 中文(1) cprimer(1) c++(1) 《javascript源码(1) hello(1) sdk(1) ui设计技巧(1) android应用开发入门与实战(1) 和开发模式详解(1) andriod...
如对话框背景等,或去google code找些开源的代码下来研究,学习人家的设计思想、模块功能的划分、代码组织结构等知识 这个过程中,涉及到的知识比较多,如版本管理工具SVN、Git、Mercurial,如设计模式Android实训...
SDK、开发中用到的工具、Android开发教程、Android设计规范,免费的设计素材等。 从Futurice公司Android开发者中学到的经验。 遵循以下准则,避免重复发明轮子。 一个定期翻译国外Android优质的技术、开源库、软件...