组合模式
【摘要】
定义:将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。(为具有上下级关系两类 提供共同的接口,创建了属性结构)
目的:1.使两个对象拥有属性结构。
2.使上下级的类拥有相同的接口。
优...
定义:将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。(为具有上下级关系两类 提供共同的接口,创建了属性结构)
目的:1.使两个对象拥有属性结构。
2.使上下级的类拥有相同的接口。
优点:1.屏蔽了类的不一致,客户可以通过相同的方式调用不同的层级。
2.对客户实现了封装
3.提供了统一的接口
缺点:1.其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒转原则
2. 使得设计更加复杂。客户端需要花更多时间理清类之间的层次关系
类图:
代码:
component(上级关系类的共同抽象类)
-
public abstract class ComponentPerson {
-
-
protected String name;
-
-
public ComponentPerson (String name) {
-
this.name = name;
-
}
-
-
//进行招聘
-
public abstract void recruitPerson();
-
-
//解雇
-
public abstract void firePerson();
-
-
//工作
-
public abstract void work(int depth);
-
-
}
left(子类 员工类)
-
public class Leaf extends ComponentPerson {
-
-
public Leaf(String name) {
-
super(name);
-
}
-
-
@Override
-
public void recruitPerson() {
-
//不能招聘
-
throw new Exception();
-
}
-
-
@Override
-
public void firePerson() {
-
//不能解雇
-
throw new Exception();
-
}
-
-
@Override
-
public void work() {
-
System.out.println("努力当员工");
-
}
-
-
}
Composite(父类 老板类)
-
public class Composite extends ComponentPerson {
-
-
public Composite(String name) {
-
super(name);
-
}
-
-
-
@Override
-
public void recruitPerson() {
-
System.out.println("小伙子我看好你");
-
}
-
-
@Override
-
public void firePerson() {
-
System.out.println("对不起 你被开除了");
-
}
-
-
@Override
-
public void work() {
-
System.out.println("努力当好老板");
-
}
-
-
}
文章来源: baocl.blog.csdn.net,作者:小黄鸡1992,版权归原作者所有,如需转载,请联系作者。
原文链接:baocl.blog.csdn.net/article/details/102593141
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)