耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性
设计模式的作用:
一个类应该只负责一项职责
不应该依赖它不需要的接口
即一个类对另一个类的依赖应该建立在最小的接口上
拆分后使得每个类实现对应接口的全部方法
在java中,抽象指的是接口或抽象类,细节就是具体的实现类
传递依赖:
注意事项:
子类中子类可以扩展父类的功能但尽量不要重写父类的方法
在适当的情况下,可以通过聚合,组合,依赖来解决问题
原来的父类和子类都继承一个通用的基类
最基础、最重要的设计原则
对扩展开放,对修改关闭
用抽象构建框架,用实现扩展细节
提供方扩展开放,使用方对修改关闭
尽量通过扩展软件实体的行为来实现变化,而不是通过修改
迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的越少越好
尽量将逻辑封装在类的内部。对外除了提供的public 方法,不对外泄露任何信息
只与直接的朋友通信:
当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等
尽量使用合成/聚合的方式,而不是使用继承
软件系统分析和设计的语言工具
一套符号用于描述软件模型中的各个元素和他们之间的 关系,比如类、接口、实现、泛化、依赖、组合、聚合等
描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系
可见性的符号:
属性的完整表示方式是: 可见性 名称 :类型 [ = 缺省值]
方法的完整表示方式是: 可见性 名称(参数列表) [ : 返回类型]
1.关联关系:
单向关联:一个顾客有一个地址
双向关联:双方各自持有对方类型的成员变量
自关联:Node类包含类型为Node的成员变量
2.聚合关系:
强关联关系,整体和部分之间的关系
成员对象是整体对象的一部分,但成员对象可以独立存在
3.组合关系:
更强的聚合关系
整体对象可以控制部分对象的生命周期,没有整体也不存在部分
4.依赖关系:
耦合度最弱的一种关联,临时性:局部变量、方法的参数或者对静态方法的调用
5.继承关系:泛化关系
耦合度最大的一种关系,表示一般与特殊的关系
6.实现关系:
接口与实现类之间的关系,实现了接口中所声明的所有的抽象操作
显示对象之间交互的图
按时间顺序排列
建模元素主要有:对象(Actor)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message)等等。
1.对象
矩形表示,命名方式:
对象置于时序图的顶部说明在交互开始时对象就已经存在了;
如果对象的位置不在顶部, 表示对象是在交互的过程中被创建的
2.生命线
垂直的虚线
表示时序图中的对象在一段生命周期内存在
每个对象底部中心的位置都带有生命线
3.消息
两个对象之间的单路通信. 从发送方指向接收方