我明白了,浅聊设计理念

简介: ## 为什么面向对象说到为什么要面向对象,自然先说说最入门的面向过程,将面向过程与面向对象进行一下对比。### 面向过程一个人生活,什么事儿都需要自己做,比如说洗衣服这件事儿。### 面向对象两个人生活,有的事情只需要找个人做就可以了,还是洗衣服这件事儿。

为什么面向对象

说到为什么要面向对象,自然先说说最入门的面向过程,将面向过程与面向对象进行一下对比。

面向过程

一个人生活,什么事儿都需要自己做,比如说洗衣服这件事儿。

面向对象

两个人生活,有的事情只需要找个人做就可以了,还是洗衣服这件事儿。

二者对比

从上面的例子中是不是能看出面向对象和面向对象的特征?

方式 注重点 解决问题的关注点 思维
面向过程 一系列详细步骤 都放到解决问题的每一个详细的步骤上面(方法) 思考每一个具体的详细步骤
面向对象 一系列对象 都放到解决问题需要的一系列对象身上(object) 思考每一个解决问题的对象

从上面的表格中去理解,是不是懂了面向过程和面向对象。

面向对象是依赖于面向过程的, 面向对象的抽象会将面向过程的详细步骤进行整合处理。
这种整合方式是根据不同的场景来对很多详细的步骤进行分门别类的进行整理、管理。

举一个栗子

下馆子吃饭

面向过程:

面向对象

小结

  • 抽象是对具体的封装,具体是对抽象的实现。
  • 面向过程是 在面向对象不存在的时候 才有的,面向对象是 在面向过程的基础上 才诞生的。
  • 无论面向对象怎么样,最后都需要通过面向过程来实现。
  • 通过面向对象 能够更好的利用 面向过程的逻辑。
  • 通过面向对象 能够使得面向过程的功能 发挥更大的作用。
例1:老板 与 员工(老板的命令 由 员工来实现)。
例2:领导者 与 属下(领导者的指挥 由 属下来完成)。
结果:没有员工和属下,就没有老板和领导者。

讲讲设计模式

面向对象的好处

封装
对代码进行整理,以各种各样的方式整理,如模块儿、组件、类、对象、数组、方法、变量等等。

继承
复用已有的代码,如复用已有模块儿、组件、类、 对象、方法、变量 等等。

多态
对功能接口进行替换,如 需要什么功能就换什么样的代码,改一处代码就改变了多处发生良好的变化。
并不是在原先的基础上去修改大部分的源代码,而是新建文件,往这个新文件中加代码,之后修改少部分源代码或者不修改源代码的方式去引用这个新文件中的代码。

设计模式有哪些?

创建型

5种:工厂方法、抽象工厂、建造者、原型、单例

我自己的理解:这类设计模式用于“花式的创建对象”,将对象创建的过程进行封装,将对象的创建和使用 解耦了。

较官方的理解:

结构型

7种:适配器、桥接、组合、装饰器、外观、享元、代理

我自己的理解:这类设计模式用于“变着花样地借用花式创建的对象”,组合出一些类和对象之间的经典结构,用于解决特定场景下的经典问题,将类、对象的结构和使用解耦。

较官方的理解:

行为型

11种:模板方法、命令、迭代器、观察者、中介者、状态、策略、解释器、职责链、备忘录、访问者。

我自己的理解:这类设计模式用于“实现日常开发中的特殊功能或特殊行为”,汇总了一些类、对象之间的经典交互方式,用于将特定场景下拥有相关行为的类、对象解耦。

较官方的理解:

设计模式中的常见关系

死记是没有用的噢,我们可以先弄清楚类图的六种关系:依赖关系、关联关系、聚合关系、组合关系、实现关系、泛化关系。
暂时弄不懂也没关系,先记住它。

六种关系中,从弱到强依次是:
依赖关系 < 关联关系 < 聚合关系 < 组合关系 < 实现关系 = 泛化关系

设计模式中关系大致分为这六种。
相关文章
设计模式——从简单的程序变化到设计理念
设计模式——从简单的程序变化到设计理念
157 0
我来告诉你代码重构有什么好处
根据两本关于重构的书籍的作者 Martin Fowler的说法 “重构是改变软件系统的过程,它不会改变代码的外部行为,但会改善其内部结构。这是一种清理代码的严格方法,可以最大限度地减少引入错误的机会。本质上,当你重构时,你是在改进编写代码后的设计。”
316 0
我明白了,谈一谈设计原则
死记是没有用的,正如教条主义式的生搬硬套没有多少作用,理解了才能举一反三、灵活运用。 我们可以再弄清楚十大原则:单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则、 迪米法特原则、组合聚合复用原则、不重复你自己、尽量保持简单、不过度设计。
168 0
我明白了,谈一谈设计原则
软件测试面试题:面向对象的测试用例设计有几种方法?如何实现?
软件测试面试题:面向对象的测试用例设计有几种方法?如何实现?
296 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等