组合模式:
通俗来说就是,有个容器,然后又好多衍生产品,能在容器里新增,删除产品。比如:LinearLayout,RelativeLayout等布局容器,可以在容器里面放置TextView,Button,等这些衍生产品。
1.意图
将对象View和ViewGroup组合成树形结构以表示"部分-整体"的层次结构(View可以做为ViewGroup的一部分)。
组合模式使得用户对单个对象View和组合对象ViewGroup的使用具有一致性。
2.结构
针对View和ViewGroup的实际情况,我们选择安全式的组合模式(在组合对象中添加add,remove,getChild方法),添加少许的注释,我们把上图修改为:
3.代码
View类的实现:
publicclassView{
//省略了无关的方法
}
ViewGroup的实现:
public abstract class ViewGroup extends View{
public void addView(View child) {
}
public void removeView(View view) {
}
public View getChildAt(intindex) {
try{
return mChildren[index];
}catch(IndexOutOfBoundsException ex) {
return null;
}
}
}
4.效果
(1).结构型模式
(2).定义了包含基本对象和组合对象的类层次结构。这种结构能够灵活控制基本对象与组合对象的使用。
(3).简化客户代码。基本对象和组合对象有一致性,用户不用区分它们。
(4).使得更容易添加新类型的组件。
(5).使你的设计变得更加一般化。
网友评论