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

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).使你的设计变得更加一般化。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android设计模式是在Android应用程序开发中常用的一些软件设计模式的应用集合。这些设计模式可以帮助开发者解决一些常见的问题,提高代码的可维护性、可扩展性和可重用性。 以下是一些常见的Android设计模式: 1. MVC(Model-View-Controller)模式:将应用程序分为模型、视图和控制器三个部分,实现了业务逻辑和界面的分离。模型负责数据的处理和存储,视图负责展示界面,控制器负责处理用户的输入和业务逻辑的处理。 2. MVP(Model-View-Presenter)模式:在MVC模式的基础上,将控制器改为Presenter,负责处理视图和模型之间的交互。Presenter通过接口与视图进行通信,将视图的操作转发给模型进行处理。 3. MVVM(Model-View-ViewModel)模式:在MVP模式的基础上,引入了ViewModel层,负责处理视图和模型之间的数据绑定。ViewModel将模型的数据转换为视图所需的数据,并通过数据绑定机制将其绑定到视图上。 4. 单例模式:确保一个类只有一个实例,并提供一个全局的访问点。在Android开发中,常用于管理全局的资源或状态,例如Application类。 5. 观察者模式:定义了对象之间的一对多依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都会收到通知并自动更新。在Android开发中,常用于实现事件的发布和订阅机制。 6. 适配器模式:将一个类的接口转换成客户端所期望的另一个接口。在Android开发中,常用于将不同的组件或类适配成统一的接口,例如RecyclerView的Adapter。 这些设计模式可以根据具体的需求和场景进行选择和组合使用,以提高代码的质量和开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值