面向对象编程思想(二) - 人的描述
(1)首先需要分析下人应该怎样来描述,如何分类
1.人的分类,可以按照以下几种方式来分类,简单罗列:
按照性别:男人+女人
按照年龄:老年+年轻人
按照肤色:黑人+白人+黄人
......
2.那么,当要描述一个具体的人时,就可能需要上面那些分类的部分或全部的集合,因此需要让该具体的人去实现不同的接口,如:男人+年轻人+黑人,即需要实现,实现男人的接口、年轻人的接口、黑人的接口;所以应该把每个类别的每种情况写成接口,来让一个实体来实现
(2)进行接口的设计划分、编写
1.首先需要一个人的接口,每个人都应该实现该接口,代码如下:
1 /** 2 * 用于描述人的接口,所有的人都必须实现这个接口 3 * @author Wfei 4 * 5 */ 6 public interface IPeople 7 { 8 9 }
2.其次,就是讲描述人的一些特征,都写成接口,当描述一个人时,如果这个人具有某个特征,则只需要去实现相应的接口即可,本次编写的特征接口有:
男人接口:public interface IMan
女人接口:public interface IWoman
老人接口:public interface IOld
年轻人接口:public interface IYoung
黑人接口:public interface IBlack
白人接口:public interface IWhite
黄人接口:public interface IYellow
(3)在上面的一些人的特征的接口编写完毕后,当我们来形容一个这样的人时:男人、年轻人、黑人,就可以写一个类,来继承相应的人的特征接口:IMan、IYoung、IBlack,代码如下:
1 /** 2 * 描述一个男人,这个男人是年轻人,并且肤色是黑色 3 * @author Wfei 4 * 5 */ 6 public class Person01 implements IMan, IYoung, IBlack 7 { 8 9 }
(三)总结
对于一类人的一些特征,我们把他们写成特征接口,而对于所有人都会有的一些必备的属性、特征,可以把这些必备的属性写成父类的属性或方法,这样在形容某类人时,可以在实现了相应的特征后,再继承人的必备的属性的父类;而当需要描述某类人中一个具体的人,就可以让该类人中这个具体的人继承描述这类人的类,然后添加/重写自己应该有属性或方法;这种将一个具体的人逐步的抽象、逐步的抽取属性的程序设计方法,不仅保证了面向对象设计思想中体现的“层次感”,也可以在以后有新的特征的人出现时,不会改动程序的主要逻辑,只需要将相应的特征写成接口,并给予实现、继承即可,保证了程序的灵活性和可扩展性;