1700455583
1700455584
分析到这里,我们发现接口IPettyGirl的设计是有缺陷的,过于庞大了,容纳了一些可变的因素,根据接口隔离原则,星探AbstractSearcher应该依赖于具有部分特质的女孩子,而我们却把这些特质都封装了起来,放到了一个接口中,封装过度了!问题找到了,我们重新设计一下类图,修改后的类图如图4-2所示。
1700455585
1700455586
1700455587
1700455588
1700455589
图4-2 修改后的星探寻找美女类图
1700455590
1700455591
把原IPettyGirl接口拆分为两个接口,一种是外形美的美女IGoodBodyGirl,这类美女的特点就是脸蛋和身材极棒,超一流,但是没有审美素质,比如随地吐痰,文化程度比较低;另外一种是气质美的美女IGreatTemperamentGirl,谈吐和修养都非常高。我们把一个比较臃肿的接口拆分成了两个专门的接口,灵活性提高了,可维护性也增加了,不管以后是要外形美的美女还是气质美的美女都可以轻松地通过PettyGirl定义。两种类型的美女定义如代码清单4-6所示。
1700455592
1700455593
代码清单4-6 两种类型的美女定义
1700455594
1700455595
public interface IGoodBodyGirl{
1700455596
1700455597
//要有姣好的面孔
1700455598
1700455599
public void goodLooking();
1700455600
1700455601
//要有好身材
1700455602
1700455603
public void niceFigure();
1700455604
1700455605
}
1700455606
1700455607
public interface IGreatTemperamentGirl{
1700455608
1700455609
//要有气质
1700455610
1700455611
public void greatTemperament();
1700455612
1700455613
}
1700455614
1700455615
按照脸蛋、身材、气质都具备才算美女,实现类实现两个接口,如代码清单4-7所示。
1700455616
1700455617
代码清单4-7 最标准的美女
1700455618
1700455619
public class PettyGirl implements IGoodBodyGirl,IGreatTemperamentGirl{
1700455620
1700455621
private String name;
1700455622
1700455623
//美女都有名字
1700455624
1700455625
public PettyGirl(String_name){
1700455626
1700455627
this.name=_name;
1700455628
1700455629
}
1700455630
1700455631
//脸蛋漂亮
1700455632
[
上一页 ]
[ :1.700455583e+09 ]
[
下一页 ]