架构师训练营第二周总结

用户头像
xs-geek
关注
发布于: 2020 年 10 月 03 日

什么是面向对象编程

  • 万物皆对象

  • 程序是对象的集合,它们通过发送消息来告知彼此要做的

  • 每个对象都有自己的有其他对象所构成的存储

  • 每个对象都拥有其类型

  • 某一特定类型的所有对象都可以接收同样的消息

利用多态特性进行编程

区别于面向对象分析

面向对象分析是将客观世界,即编程的业务领域进行对象分析(充血模型与贫血模型;领域驱动设计DDD)

什么是对象

  • 状态:表明每个对象可以有自己的数据

  • 行为:表明每个对象可以产生行为

  • 标识:表明每个对象都区别于其他对象

面向对象编程三要素

  • 封装:隐藏实现

  • 继承:接口重用

  • 多态:对象互换

面向对象设计的目的和原则

目的

强内聚、低耦合(易扩展、更强壮、可移植、易维护)

不好的设计

僵化:很难改动,改动成本高,涉及模块多

脆弱:对系统改动容易影响到其他模块

牢固:有些模块不易拆解,使之成为可重用组件

粘滞:做正确事情比错误事情困难

不必要的复杂性:包含没用的部分

不必要的重复性:有重复结构

晦涩:难理解

原则

为了达到设计目的,总结了多种指导原则

原则是独立于编程语言的,可以用于非面向对象的编程语言中

开、闭原则(OCP)

对扩展是开放的,对更改是封闭的,关键是抽象

  • 抽象类/接口

  • 策略模式

  • 适配器模式

  • 观察者模式

依赖倒置原则(DIP)

高层模块不能依赖低层模块,大家都依赖抽象

抽象不能依赖实现,而是实现依赖抽象

倒置:模块与包的依赖关系,开发顺序和职责

软件层次化:高层决定低层,高层被重用

里式替换原则(LSP,liskov替换)

子类型必须能替换掉它们的基类型

子类一定得拥有基类的整个接口

子类的访问控制不能比基类更严格

解决办法:提取共性到基类,改成组合

检测LSP:

通过客户程序体现

避免过于复杂或过度设计

只预测明显违反LSP的情况,推迟其他预测

单一职责原则(SRP)-内聚性相关

内聚性原则,一个模块组成元素之间的功能相关性

一个类,只能有一个引起它变化的原因

违反后果:

脆弱性、不可移植性

方法:分清职责

接口分离原则(ISP)-内聚性相关

不应该强迫客户程序依赖它们不需要的方法

发布于: 2020 年 10 月 03 日 阅读数: 22
用户头像

xs-geek

关注

还未添加个人签名 2018.04.22 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第二周总结