我明白了,浅聊设计理念

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

为什么面向对象

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

面向过程

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

面向对象

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

二者对比

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

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

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

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

举一个栗子

下馆子吃饭

面向过程:

面向对象

小结

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

讲讲设计模式

面向对象的好处

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

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

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

设计模式有哪些?

创建型

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

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

较官方的理解:

结构型

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

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

较官方的理解:

行为型

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

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

较官方的理解:

设计模式中的常见关系

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

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

设计模式中关系大致分为这六种。
目录
相关文章
|
18天前
|
设计模式 程序员 Serverless
探索编程之美:从代码细节到技术哲学
【10月更文挑战第28天】在这篇文章中,我们将一起走进编程的世界,探索那些隐藏在代码行间的艺术与哲理。通过深入浅出的讲解和实际的代码示例,我们不仅能够学习到技术层面的知识,更能体会到编程作为一种创造性活动所带来的乐趣和启示。无论你是初学者还是资深开发者,都能在这段旅程中找到新的视角和灵感。
43 11
|
架构师 关系型数据库 程序员
空手撸SOLID架构设计原则,六大原则层层解析,你绝想不到
设计原则概述 通常来说,要想构建—个好的软件系统,应该从写整洁的代码开始做起。毕竟,如果建筑所使用的砖头质量不佳,那么架构所能起到的作用也会很有限。反之亦然,如果建筑的架构设计不佳,那么其所用的砖头质量再好也没有用。这就是SOLID设计原则所要解决的问题。
76 0
|
前端开发 Java 程序员
【系统设计】大神三分钟搞懂领域驱动设计(一)
【系统设计】大神三分钟搞懂领域驱动设计
【系统设计】大神三分钟搞懂领域驱动设计(一)
|
存储 开发框架 数据可视化
【系统设计】大神三分钟搞懂领域驱动设计(三)
【系统设计】大神三分钟搞懂领域驱动设计
【系统设计】大神三分钟搞懂领域驱动设计(三)
|
存储 开发框架 前端开发
【系统设计】大神三分钟搞懂领域驱动设计(二)
【系统设计】大神三分钟搞懂领域驱动设计
|
存储 Java 数据库连接
写了这么久代码你了解Java面向对象的设计原则吗?(三)
写了这么久代码你了解Java面向对象的设计原则吗?
125 0
写了这么久代码你了解Java面向对象的设计原则吗?(三)
|
存储 XML Java
写了这么久代码你了解Java面向对象的设计原则吗?(二)
写了这么久代码你了解Java面向对象的设计原则吗
211 0
写了这么久代码你了解Java面向对象的设计原则吗?(二)
|
设计模式 XML JavaScript
写了这么久代码你了解Java面向对象的设计原则吗?(一)
写了这么久代码你了解Java面向对象的设计原则吗?
122 0
写了这么久代码你了解Java面向对象的设计原则吗?(一)
|
存储 缓存 Java
面试官:让你设计一套图片加载框架,你会怎么设计?
很多同学在面试中都会被问到图片加载这块的知识。
|
设计模式 算法 前端开发
我明白了,谈一谈设计原则
死记是没有用的,正如教条主义式的生搬硬套没有多少作用,理解了才能举一反三、灵活运用。 我们可以再弄清楚十大原则:单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则、 迪米法特原则、组合聚合复用原则、不重复你自己、尽量保持简单、不过度设计。
113 0
我明白了,谈一谈设计原则
下一篇
无影云桌面