1、类的层次分为三层
接口
抽象类
类
继承关系
注:为使程序灵活、可扩展、可复用的角度出发,将程序service层架构设为3层,接口 -> 抽象类 -> 实现类。
至于为什么有了接口还要增加一层抽象类?
观点1:抽象类是接口与实现类之间的桥梁。
让抽象类去实现接口,而不是每个实现类去实现接口,实现类一致的行为(或者说大部分一致的行为)在抽象类中进行实现,而不一致的行为(或者一小部分不一致的行为),在抽象类中写成抽象方法,让子类去重写,减少子类重写接口所有方法的负担。
以下是举例类图:
(使用抽象类前)
(使用抽象类后)
注意:
注意类图中的接口:
①接口名要加上<<interface>>
②接口中的方法必须是斜体的
抽象类:
①抽象类的名称必须是斜体的;
②抽象类中的抽象方法必须是斜体的,非抽象方法是不用斜体的。
2、类图规范
类、接口名都要有意义
访问控制符要正确
参数、返回值类型格式要正确
例如:
3、类、接口间关系是否描述准确
注意每种关系的不同表现形式
依赖关系是最弱的关系,两个类之间是否还有比依赖强的关系,在画类图时,需要考虑关系在代码中的体现。
4、接口与类的设计原则
接口:接口隔离原则
接口应该尽量细化,一个接口对应一个功能模块。使接口轻便灵活,而不是臃肿不堪。要求“尽量使用多个专门的接口”,专门的接口是指提供给每个模块的都应该是单一接口(即每个模块对应一个接口),而不是建立一个庞大臃肿的接口来容纳所有客户端访问。
类:单一职责原则
代码中的具体体现,一个类中只能有一个 public 方法,而其他 private 方法都是为这一个 public 方法服务。也就是,对于外界来说,只能有一个方法仅供外界访问。