左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家
180928 人已学习
新⼈⾸单¥98
登录后,你可以任选6讲全文学习
课程目录
已完结/共 119 讲
左耳听风
15
15
1.0x
00:00/00:00
登录|注册

35 | 编程范式:面向对象编程

缺点
优点
代理模式
策略模式
桥接模式
多态
继承
封装
小结
IoC 控制反转
示例三:资源管理
示例二:拼装功能
示例一:拼装对象
设计模式
特性
面向对象编程

该思维导图由 AI 生成,仅供参考

你好,我是陈皓,网名左耳朵耗子。
前面我们谈了函数式编程,函数式编程总结起来就是把一些功能或逻辑代码通过函数拼装方式来组织的玩法。这其中涉及最多的是函数,也就是编程中的代码逻辑。但我们知道,代码中还是需要处理数据的,这些就是所谓的“状态”,函数式编程需要我们写出无状态的代码。
而这天下并不存在没有状态没有数据的代码,如果函数式编程不处理状态这些东西,那么,状态会放在什么地方呢?总是需要一个地方放这些数据的。
对于状态和数据的处理,我们有必要提一下“面向对象编程”(Object-oriented programming,OOP)这个编程范式了。我们知道,面向对象的编程有三大特性:封装、继承和多态
面向对象编程是一种具有对象概念的程序编程范型,同时也是一种程序开发的抽象方针,它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的可重用性、灵活性和可扩展性,对象里的程序可以访问及修改对象相关联的数据。在面向对象编程里,计算机程序会被设计成彼此相关的对象。
面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对计算机下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。
目前已经被证实的是,面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用。此外,支持者声称面向对象程序设计要比以往的做法更加便于学习,因为它能够让人们更简单地设计并维护程序,使得程序更加便于分析、设计、理解。
现在,几乎所有的主流语言都支持面向对象,比如:Common Lisp、Python、C++、Objective-C、Smalltalk、Delphi、Java、Swift、C#、Perl、Ruby 与 PHP 等。
说起面向对象,就不得不提由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合作出版的《设计模式:可复用面向对象软件的基础》(Design Patterns - Elements of Reusable Object-Oriented Software)一书,在此书中共收录了 23 种设计模式。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

面向对象编程(OOP)是一种强大的编程范式,本文深入探讨了其基本特性和优势,以及经典设计模式。通过生动的代码示例,读者可以直观地感受到OOP的优势,如封装、继承和多态。文章还详细介绍了如何运用OOP设计程序,并探讨了经典设计模式如“桥接(Bridge)模式”和“策略模式”。此外,文章还涉及IoC(控制反转)的概念,通过生动的比喻和实例,阐述了IoC的本质和在现实生活中的应用。最后,文章指出通过面向对象的方式,可以通过抽象和中间件来解耦,降低软件的复杂度,实现业务的规范化。同时,文章也提到了面向对象的优缺点,以及一些人对其不喜好的原因。总的来说,本文通过深入的解析和生动的例子,帮助读者更好地理解和应用面向对象编程的技术特点,以及IoC的重要性和应用场景。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《左耳听风》
新⼈⾸单¥98
立即购买
登录 后留言

全部留言(32)

  • 最新
  • 精选
  • fsj
    示例三中的代码感觉使用了RAII技术也很丑陋;控制反转挺难理解的,但是我觉得更难的是识别出哪里需要控制反转

    作者回复: 求不丑陋的例子

    2018-04-05
    8
    6
  • 业余爱好者
    控制反转就是:从“受制于人”到“授制于人”。
    2020-03-25
    68
  • 光明
    文章太好了,赞👍
    2018-01-30
    1
    21
  • 拉欧
    面向对象编程,一是抽象思维,把数据和算法抽象成类和对象;二是标准化,接口即协议,所有的实现类都要满足定义的接口才可以作为依赖;三是封装,对象之间通过接口调用,互相之间不关心彼此的细节;总之,接口的定义是否清晰是面向对象设计的关键; 由于对象内封装了状态,所以在并发环境下天然存在问题
    2019-05-27
    15
  • 瀚海星尘
    IoC/DIP的思想真是酷啊!!!
    2019-07-15
    8
  • 连子
    领域建模啥时候讲讲?
    2018-04-14
    8
  • Join
    刚好今天代码里用到了IOC/DI,这时候看下文章太有感觉了,有补充了新的知识,谢谢皓子叔
    2018-02-28
    7
  • 喜剧。
    以前对接口的理解不是那么深刻,今天学习到了。
    2021-01-30
    4
  • edisonhuang
    面向对象的编程有三大特性:封装、继承和多态 相比于函数式编程更强调动作,面向对象则更强调名词。它更符合我们人类的思考模式,将数据封装在对象之中 面向对象强调两点,一是面向接口而非面向实现编程。二是偏向使用组合而非继承。 通过面向对象的方法,实现控制反转个依赖导致。对于底层的服务更多的是实现标准的协议,同时将协议开放出来提供给其他系统订阅 。而基于协议需要做怎样的具体操作,则交给其他系统以及来决策
    2019-06-24
    3
  • Valen
    @xilie 关于会员等级与多个业务特权对应的问题, 想了下可以用控制反转的方法. 就是抽出一个 等级<->特权 的标准出来, 向外提供 类似 `getPrivileges(level)`, `havePrivilege(privilege, level)` 的接口, 然后会员等级系统和业务系统都依赖于这个标准. 有变动的话就直接改这个标准就行
    2019-05-30
    3
收起评论
显示
设置
留言
32
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部