1700467910
仔细看看这个类图,还能不能发现点问题。想想看接口的作用是什么?定义一类事物所具有的共性,那ILeaf和IBranch是不是也有共性呢?有,getInfo方法!我们是不是要把这个共性也封装起来呢?是的,是的,提炼事物的共同点,然后封装之,这是我们作为设计专家的拿手好戏,修改后的类图如图21-4所示。
1700467911
1700467912
1700467913
1700467914
1700467915
图21-4 修改后的类图
1700467916
1700467917
类图上增加了一个ICorp接口,它是公司所有人员信息的接口类,不管你是经理还是员工,你都有名字、职位、薪水,这个定义成一个接口没有错,但是你可能对于ILeaf接口持怀疑状态,空接口有何意义呀?有意义!它是每个树枝节点的代表,系统扩容的时候你就会发现它是多么“栋梁”。我们先来看新增加的接口ICorp,如代码清单21-8所示。
1700467918
1700467919
代码清单21-8 公司人员接口
1700467920
1700467921
public interface ICorp{
1700467922
1700467923
//每个员工都有信息,你想隐藏,门儿都没有!
1700467924
1700467925
public String getInfo();
1700467926
1700467927
}
1700467928
1700467929
接口很简单,只有一个方法,就是获得员工的信息,树叶节点是最基层的构件,我们先来看看它的接口,空接口,如代码清单21-9所示。
1700467930
1700467931
代码清单21-9 树叶接口
1700467932
1700467933
public interface ILeaf extends ICorp{
1700467934
1700467935
}
1700467936
1700467937
树叶接口的实现类,如代码清单21-10所示。
1700467938
1700467939
代码清单21-10 树叶接口
1700467940
1700467941
public class Leaf implements ILeaf{
1700467942
1700467943
//小兵也有名称
1700467944
1700467945
private String name=””;
1700467946
1700467947
//小兵也有职位
1700467948
1700467949
private String position=””;
1700467950
1700467951
//小兵也有薪水,否则谁给你干
1700467952
1700467953
private int salary=0;
1700467954
1700467955
//通过一个构造函数传递小兵的信息
1700467956
1700467957
public Leaf(String name,String position,int salary){
1700467958
1700467959
this.name=name;
[
上一页 ]
[ :1.70046791e+09 ]
[
下一页 ]