为什么面向对象
说到为什么要面向对象,自然先说说最入门的面向过程,将面向过程与面向对象进行一下对比。
面向过程
一个人生活,什么事儿都需要自己做,比如说洗衣服这件事儿。
面向对象
两个人生活,有的事情只需要找个人做就可以了,还是洗衣服这件事儿。
二者对比
从上面的例子中是不是能看出面向对象和面向对象的特征?
方式 | 注重点 | 解决问题的关注点 | 思维 |
---|---|---|---|
面向过程 | 一系列详细步骤 | 都放到解决问题的每一个详细的步骤上面(方法) | 思考每一个具体的详细步骤 |
面向对象 | 一系列对象 | 都放到解决问题需要的一系列对象身上(object) | 思考每一个解决问题的对象 |
从上面的表格中去理解,是不是懂了面向过程和面向对象。
面向对象是依赖于面向过程的,面向对象的抽象
会将面向过程的详细步骤进行整合处理。
这种整合方式是根据不同的场景来对很多详细的步骤进行分门别类的进行整理、管理。
举一个栗子
下馆子吃饭
面向过程:
面向对象
小结
- 抽象是对具体的封装,具体是对抽象的实现。
- 面向过程是 在面向对象不存在的时候 才有的,面向对象是 在面向过程的基础上 才诞生的。
- 无论面向对象怎么样,最后都需要通过面向过程来实现。
- 通过面向对象 能够更好的利用 面向过程的逻辑。
- 通过面向对象 能够使得面向过程的功能 发挥更大的作用。
例1:老板 与 员工(老板的命令 由 员工来实现)。
例2:领导者 与 属下(领导者的指挥 由 属下来完成)。
结果:没有员工和属下,就没有老板和领导者。
讲讲设计模式
面向对象的好处
封装
对代码进行整理,以各种各样的方式整理,如模块儿、组件、类、对象、数组、方法、变量等等。
继承
复用已有的代码,如复用已有模块儿、组件、类、 对象、方法、变量 等等。
多态
对功能接口进行替换,如 需要什么功能就换什么样的代码,改一处代码就改变了多处发生良好的变化。
并不是在原先的基础上去修改大部分的源代码,而是新建文件,往这个新文件中加代码,之后修改少部分源代码或者不修改源代码的方式去引用这个新文件中的代码。
设计模式有哪些?
创建型
5种:工厂方法、抽象工厂、建造者、原型、单例
我自己的理解:这类设计模式用于“花式的创建对象”,将对象创建的过程进行封装,将对象的创建和使用
解耦了。
较官方的理解:
结构型
7种:适配器、桥接、组合、装饰器、外观、享元、代理
我自己的理解:这类设计模式用于“变着花样地借用花式创建的对象”,组合出一些类和对象之间的经典结构
,用于解决特定场景下的经典问题,将类、对象的结构和使用解耦。
较官方的理解:
行为型
11种:模板方法、命令、迭代器、观察者、中介者、状态、策略、解释器、职责链、备忘录、访问者。
我自己的理解:这类设计模式用于“实现日常开发中的特殊功能或特殊行为”,汇总了一些类、对象之间的经典交互
方式,用于将特定场景下拥有相关行为的类、对象解耦。
较官方的理解:
设计模式中的常见关系
死记是没有用的噢,我们可以先弄清楚类图的六种关系:依赖关系、关联关系、聚合关系、组合关系、实现关系、泛化关系。
暂时弄不懂也没关系,先记住它。
六种关系中,从弱到强依次是:
依赖关系 < 关联关系 < 聚合关系 < 组合关系 < 实现关系 = 泛化关系
设计模式中关系大致分为这六种。