写点什么

架构师实现自己架构目标的主要手段

用户头像
小胖子
关注
发布于: 2020 年 06 月 17 日

面向对象编程三要素

  • 封装性

隐藏实现细节

定义接口

  • 继承性

is-a

has-a

  • 多态性

后期绑定

向上转型


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

目的

强内聚、低耦合

易扩展 - 易于增加新的功能

更强壮 - 不容易被粗心的程序员破话

可移植 - 能够在多样的环境下运行

更简单 - 容易理解、容易维护

臭味

僵硬 - 不易改变

脆弱 - 只想改 A,结果 B 被意外破坏

不可移植 - 不能适应环境变化

导致误用的陷阱 - 做错误的事比做正确的事更容易,引诱程序员破坏原有的设计

晦涩 - 代码难以理解

过度设计、copy-paste 代码


原则

开闭原则 OCP

open/closed principle

对扩展是开放的

对更改是封闭的

依赖倒置原则 DIP

dependency inversion principle

高层模块不能依赖底层模块,而是大家都依赖抽象

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


框架的核心:don't call me, i'll call you


Liskov 替换原则 LSP

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

单一职责原因 SRP

single responsibility principle

内聚性原则

接口分离原则 ISP

interface segregation principle

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

框架 VS 工具

用框架来保证架构逻辑

用工具来提高开发效率

继承 VS 组合

继承的优点:比较简单,基类大部分功能通过继承直接进入子类

继承的缺点:

破坏了封装,更多细节暴露给子类

当基类改变时,可能会层层影响其下的子类

继承是静态的,无法运行时改变组合

类数量的爆炸

应该优先使用组合

用户头像

小胖子

关注

还未添加个人签名 2018.02.04 加入

还未添加个人简介

评论

发布
暂无评论
架构师实现自己架构目标的主要手段