我明白了,浅聊设计理念

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

为什么面向对象

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

面向过程

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

面向对象

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

二者对比

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

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

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

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

举一个栗子

下馆子吃饭

面向过程:

面向对象

小结

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

讲讲设计模式

面向对象的好处

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

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

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

设计模式有哪些?

创建型

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

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

较官方的理解:

结构型

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

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

较官方的理解:

行为型

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

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

较官方的理解:

设计模式中的常见关系

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

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

设计模式中关系大致分为这六种。
目录
相关文章
|
6月前
|
项目管理
技术方案怎样写
该文档介绍了编写技术方案的要点和方法。首先强调了技术方案需明确相关方、关键指标、目标受众及预期收益。接着,提到撰写方案时应避免逻辑不清晰、表达复杂和阅读难度高等问题,追求合作共赢、系统规划和显著收益。方案写作框架包括问题、方案、优势和收益。还需深入分析需求,设定SMART目标,关注度量指标如北极星指标,确保方案设计的专业性,合理规划执行路径并做好项目管理,以实现目标并确保团队协作。
152 0
|
监控 前端开发 测试技术
吃透这些软件测试理论知识要点,你就搞懂了软件测试
吃透这些软件测试理论知识要点,你就搞懂了软件测试
374 0
|
设计模式 架构师 Java
白活了!谷歌架构师10年心血汇成的《24种设计模式》,这才是正解
设计模式 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。一看代码一团糟,那这人肯定不怎么样。 现在各种开源框架里满满都是设计模式,所以可以不用但是最好要懂,除非一辈子CRUD,不看框架。
|
SQL 存储 缓存
系统设计不知怎么入手?一文帮到你
系统设计不知怎么入手?一文帮到你
105 2
|
前端开发 Java 程序员
【系统设计】大神三分钟搞懂领域驱动设计(一)
【系统设计】大神三分钟搞懂领域驱动设计
【系统设计】大神三分钟搞懂领域驱动设计(一)
|
存储 开发框架 数据可视化
【系统设计】大神三分钟搞懂领域驱动设计(三)
【系统设计】大神三分钟搞懂领域驱动设计
【系统设计】大神三分钟搞懂领域驱动设计(三)
|
存储 开发框架 前端开发
【系统设计】大神三分钟搞懂领域驱动设计(二)
【系统设计】大神三分钟搞懂领域驱动设计
|
设计模式 算法 前端开发
我明白了,谈一谈设计原则
死记是没有用的,正如教条主义式的生搬硬套没有多少作用,理解了才能举一反三、灵活运用。 我们可以再弄清楚十大原则:单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则、 迪米法特原则、组合聚合复用原则、不重复你自己、尽量保持简单、不过度设计。
113 0
我明白了,谈一谈设计原则
|
测试技术
软件测试好学吗 只要选对了学习方式,就并不难学
我们都知道,如今互联网IT行业,在国内可是非常吃香的,尤其是近些年随着软件的普及,人们对软件的要求也是越来越高,因此国内各大互联网企业,也开始大量招聘软件测试人员,但由于这个岗位在我国的发展时间并不长,人员需求也是供应不求的。
198 0
软件测试好学吗 只要选对了学习方式,就并不难学
|
消息中间件 运维 Dubbo
源码阅读的方法、误区以及三种境界
源码阅读的方法、误区以及三种境界

相关实验场景

更多
下一篇
无影云桌面