面向对象思想概念
面向对象三大特性,封装、继承、多态。这些特性将事物抽象成对象,给对象赋一些属性和方法,外部就可以通过公开方法访问对象了。
一、设计原则
依赖倒置原则
- 在面向对象设计中有一个重要的原则是依赖倒置(Dependence Inversion Principle),主要作用是解耦,让对象与对象之间松耦合。定义如下:高层模块不应该依赖底层模块,他们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。要针对接口编程,不要对实现编程。
- 依赖倒置原则基于这样一个事实:相对于细节的多变性,抽象的东西要稳定的多。
- 抽象指的是接口或者抽象类,细节就是具体的实现类,使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。
实例
任天堂 Switch 一经推出,就获得了玩家的一致好评。其上运行的《塞尔达传说:旷野之息》,是一款优秀的开放世界动作冒险游戏,值得品玩。有如下关于 Switch 的代码:
1 | type Player struct { |
上述书写的代码,只能让玩家在 Switch 主机上玩塞尔达。开发者以后可能会将游戏移植到电脑、手机端,为了让玩家也可以在电脑、手机上玩塞尔达,需要引入一个 IPlay 玩的接口,任何只要实现了这个接口的平台或者硬件,就可以让玩家在上面玩塞尔达。
1 | // 游戏 |
因此 Player 类与 IPlay 就有了依赖关系,而电脑、手机这些都属于玩塞尔达的硬件或者平台,各自实现 IPlay 接口即可,这样就符合依赖倒置原则了。最终实现代码如下:
1 | // 游戏 |
总结
- 低层模块尽量都要有抽象类或接口,或者两者都有。
- 变量的声明类型尽量是抽象类或接口。
- 使用继承时遵循里氏替换原则。依赖倒置原则的核心就是要我们面向接口编程,理解了面向接口编程,也就理解了依赖倒置原则。
- 本文标题:面向对象思想概念
- 本文作者:beyondhxl
- 本文链接:https://www.beyondhxl.com/post/4d0a2d54.html
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!