面向对象设计
1.面向对象设计思想:
面向对象设计采用与结构化设计不一样的视角,他是将世界抽象成一系列具有一定职责的自由数据个体,个体之间相互协作,共同完成高级的行为.
职责:每个数据个体包括自己独有的数据信息(属性),还包括一些依赖于这些数据信息所能做的事情(方法),然后数据信息和所能做的事情就组成了这个自由数据个体的职责.
每个个体只执行自己的职责,如果自己无法完成一件事情就会通过互发信息,要求其他个体来做他们的能够做的事情,从而完成复杂的行为.
2.面向对象设计的过程:
2.1设计模型建立
2.1.1通过职责建立静态设计模型
1.抽象类的职责:类的职责主要是:属性职责(对象的状态)和方法职责(对象的行为)
2.抽象类之间的关系:其中明显的强弱关系是:依赖<关联<聚合<组合<继承
依赖关系:对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。
关联关系:客户类与订单类之间的关系,关联表示类之间的“持久”关系,需要保存的,或者说需要“持久化”的,或者说需要保存到数据库中的。另外,依赖表示类之间的是一种“临时、短暂”关系,这种关系是不需要保存的.
聚合(关联关系的一种):表示 has-a 的关系。与关联关系一样,聚合关系也是通过实例变量来实现这样关的。关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。如汽车类与引挚类,轮胎类之间的关系就是整体与个体的关系。与关联关系一样,聚合关系也是通过实例变量来实现的
组合关系:对象 A 包含对象 B,对象 B 离开对象 A 没有实际意义。
继承关系:企鹅 鸟类
3.添加辅助类:
接口类
记录类
启动类
控制器类
实现数据类型的类
容器类
2.1.2通过协作建立动态模型
1.抽象对象之间的协作
如何设计对象之间的协作:从小到大,从大到小
表示:顺序图
2.明确对象之间的创建:优先考虑
3.选择合适的控制风格
集中式,委托式,分散式
2.2设计模式重构
1.根据模块化思想进行重构,目标为高内聚低耦合;
模块化是为了消除软件复杂度,将复杂的分解为若干代码片段,每个完成一个功能.并且包含这个功能所需要的的信息.
耦合:
内聚:
单一职责:信息和行为集中,联合表达一个内聚的概念
依赖倒置原则:抽象不应该依赖于细节,细节应该依赖于抽象,抽象是稳定的,细节是不稳定的
里氏替换原则:子类型必须能够替换基类型而起同样的作用
接口分离原则:
2.根据信息隐藏的思想重构,目标为隐藏职责和变更
信息隐藏就是利用抽象的方法,抽象出每个类的关键细节,也就是模块的职责(什么是公开给别人看的,什么是隐藏在自己的模块中的),也就是说,抽象出来的就是接口,隐藏的就是实现,他们共同体现一个模块的职责.
开闭原则:对拓展开放,对修改关闭
3.利用设计模式进行重构 GOF23