12.面向对象设计
- 面向对象的主要概念
对象 | 主要就是将我们设计到的实体转换为代码,形成对应的对象 |
类 | 代码存储的实体,可以分为实体类,边界类(和外界进行沟通),控制类,内部打交道 |
抽象 | 将多个类中的共同属性抽象为一个共同的概念 |
封装 | 将类的内部进行封装,只能使用特定方法而不能直接访问属性 |
继承和泛化 | 主要涉及到类之间的关系,和抽象类似 |
多态 | 可以使用子类来模仿父类 |
接口 | 对外暴露的接口,只要符合接口的使用方式就可以进行调用 |
消息 | 异步传输的一种方式 |
组件 | 不同模块封装为不同的组件 |
模式和复用 | 主要涉及代码的复用 |
其次是设计原则
单一职责原则 | 设计一个类的时候,尽可能只包含一个单一的职责,而不是不是设计一个大而全的类 |
开放封闭原则 | 概述下就是对修改关闭,对扩展开放 |
里氏替换原则(lsp) | 可以利用子类去替换父类,这就需要我们保证在重载父类方法的时候确保不会错误修改 |
依赖倒置原则 | 依赖于接口进行编程,而非针对实现去编程 |
接口隔离原则 | 尽量不要将所有功能封装在一个总接口中,而应该抽象出多个专门的接口 |
组合高于继承 | 组合可以解决类和类之间的耦合过高的问题,所以应该尽可能的使用组合,而非继承去达到重用关系 |
迪米特原则 | 一个类在设计和实现的时候应该尽可能的减少对其他类的依赖 |
- UML的画图
UML相关的知识分为了构造快,规则,公共机制
其中我们着重讲下其中的构造快
而构造块主要分为了事务,关系和图
其中我们的重点在于图
主要可以分为了静态图和动态图
其中重点考察对象是结构图和用例图
结构图是静态图
用例图是动态图
其中动态图的主要使用的是用例图,执行顺序图
相关通信图,
定时图
状态图,主要是状态转换
活动图,系统活动图
交互概览图,和外界的交互概览图
- 面向对象设计
首先明确其概念,主要分为三个部分,架构模式,关于软件设计的高层决策,其中的C/S架构就属于架构模式
设计模式,也是整个系统级别的设计,主要是关于软件功能的实现
惯用法,主要是最低级的模式,主要是利用语言的能力去实现特定的功能
- 设计模式详解
主要是以上三类
面向对象设计 – 创建型模式
其中一的抽象工厂类,则是定义了一种获取实例的接口,由不同的工厂类来负责生产这类的实例
其次是工厂方法模式,定义一个接口,来根据传入来确定返回什么实例
构建器模式,讲一个复杂类的表示和其构造分离,主要用于确认构建的信息无冲突
原型模式 基于原本对象来创建新的对象,比如利用浅拷贝来替换创建对象
单例模式,为了确保一个类的唯一性,提供一个全局的访问点
结构型模式
适配器模式的主要用途就是让两个接口不兼容的类一起工作的,常见于类适配器和对象适配器
桥接模式
主要是用于将实现的类和类型接口分离,进行单独实现
组合模式,则是一组对象以树形的结构进行定义,让客户端进行统一的处理,比如文件夹
装饰器模式,则是给一个对象提供一些额外的功能
外观模式,反单一职责原则的设计,将多个接口统一抽象为一个接口
享元模式,定义一个对象池,从而提供大量细粒度对象共享的方法
代理模式,为其他对象引入一种代理控制这个对象的访问
行为型模式
责任链模式,以一种链型的模式,给多个对象处理的机会
命令模式,以一个请求的方式封装一个对象,然后以一个队列的形式依次执行这些请求
解释器模式,定义一种语言,并且定义相关的文法,并且定义一个解释器,这个解释器根据文法来解释语言中的句子
迭代器模式不必说
最后是中介者模式,定义一个中介对象来封装一系列对象的交互