【程序员】看了这篇你将彻底了解组合模式( 六 )
首先看一下透明方式的类图:
本文插图
透明性具体代码如下 , 为了充分体现透明性 , 代码和上面的改动有些大:
抽象类Staff(相当于Component)
package Composite;
import java.util.ArrayList;
public abstract class Staff {
public abstract void getInfo;
public abstract void doSomething(String notice);
//增加一个手下
public void addSubordinate(Staff staff) {
throw new UnsupportedOperationException("不支持这个功能");
}
public void removeSubordinate(Staff staff) {
throw new UnsupportedOperationException("不支持这个功能");
}
//查看我的手下
public ArrayList getSubordinate {
return ;
}
public void notifyStaff(String notice1,String notice2){
}
}
抽象类中定义了对员工操作的所有方法 , 包括增加 , 删除 , 查看和通知 。 还包括普通员工和管理者都有的获取个人信息方法和接收通知方法 , 这两个方法定义为抽象方法 。
普通员工类(相当于Leaf)
package Composite;
public class Programmer extends Staff{
private String name;
private String position;
public Programmer(String name, String position) {
this.name = name;
this.position = position;
}
@Override
public void getInfo {
String info = "姓名:"+this.name+" , 职位:"+this.position;
System.out.println(info);
}
@Override
public void doSomething(String notice) {
System.out.println(this.name+","+this.position+","+notice);
}
}
这个类比较简单 , 就是增加了两个属性和实现了两个抽象方法 。
管理者类(相当于Composite)
package Composite;
import java.util.ArrayList;
//管理者
public class Manager extends Staff {
private String name;
private String position;
public Manager(String name, String position) {
this.name = name;
this.position = position;
}
//他的手下列表
ArrayList subordinateList = ;
public void addSubordinate(Staff staff) {
//延迟初始化
if(subordinateList == ){
subordinateList = new ArrayList;
}
subordinateList.add(staff);
}
public ArrayList getSubordinate {
return this.subordinateList;
}
@Override
public void getInfo {
//先将自己输出
String info = "姓名:"+this.name+" , 职位:"+this.position;
System.out.println(info);
if(this.subordinateList !=){
//输出下属对象
for(Staff s:subordinateList){
//递归调用
- 小谢娱乐哦引来广大网友狂点赞,直呼炸天,程序员用Java实现扫雷小游戏
- #作文#这届小学生脑路清奇,贡献了一波神作文,老师看了连呼佩服佩服
- 5G芯片高通骁龙865潜力有多大?看了这些就知道
- Python爱好者社区漫画 | 程序员逆天改命
- 小猪搞机看了这六点,让你了解 iQOO Neo3为什么值得入手!
- 零度科技汇网友:看了都想买,这几款搭载骁龙865处理器的5G手机性价比高
- 35岁程序员被电信云、华为和阿里同时录取,看到薪资比较后,酸了
- 零度科技汇这几款搭载骁龙865处理器的5G手机性价比高,网友:看了都想买
- 扫地机器人哪个牌子好?看完这篇选购攻略就知道了
- 卟科技还敢小看国产手机厂商吗?,国产双雄攻霸欧洲市场!苹果看了胆颤