面向对象设计

面向对象规范和面向对象编程是两码事。

面向对象规范好比基本的英语语法,这些语法教会了你怎么用一个个单词拼凑出一句句话来,
而面向对象编程教你怎么用类,怎么把一些属性和方法封装在一个类里,怎么串出类之间的继承关系

面向对象设计:

  • 面向对象

  • 复用

  • 变化的代价极小

  • 无需改代码即可扩展

S = 单一责任原则

   "导致类变化的因素永远不要多于一个。"或者换行个说法:"一个类有且只有一个职责"。

O = 开闭原则

   "软件实体(类,模块,函数等)应该对扩展开放,对修改关闭。"

图片描述
图片描述

类的层次关系展示了"开放-关闭"原则
在这个例子中, 添加了一个抽象的Server类, 并且客户端保持了抽象类的引用, 具体的Server类实现了这个抽象Server类. 所以, 由于某种原因Server的实现类发生了改变, 客户端不需要做任何改变.
这里的抽象的Server类对修改关闭, 具体的Server实现类对扩展开放.

L = Liscov替换原则

"使用基类引用的函数必须能够使用派生类而无须了解派生类."        

在基本的面向对象原则中, "继承" 通常被描述成 "is a" 的关系. 如果一个 "开发者" 是"软件专业人员", 那么 "开发者" 类 应该 继承 "软件开发人员" 类. 这样的 "Is a" 关系 在类设计阶段非常重要, 但是这也很容易让设计者得意忘形从而以一个糟糕的继承设计告终.
"里氏替换原则" 仅仅是一种确保继承被正确使用的手段.

I = 接口隔离原则

   "用户不应该被迫依赖他们不使用的接口。"

假如你有一些类,你通过接口暴露了类的功能,这样外部就能够知道类中可用的功能,客户端也可以根据接口来设计。当然那,如果接口太大,或是暴露的方法太多,从外部看也会很混乱。接口包含的方法太多也会降低可复用性, 这种包含无用方法的”胖接口“无疑会增加类的耦合。
这还会引起其他的问题。如果一个类视图实现接口,它需要实现接口中所有的方法,哪怕一点都用不到。所以,这样会增加系统复杂度,降低系统可维护性和稳定性。
接口隔离原则确保接口实现自己的职责,且清晰明确,易于理解,具有可复用性。

D = 依赖倒置原则

   "高层次的模块不应该依赖于低层次的模块,而是,都应该依赖于抽象。"

可插拔,可替换。

参考:https://zhuanlan.zhihu.com/p/...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值