03-04 | 设计模式之美——王争

以心法为基础,以武器运用招式应对复杂的编程问题。


03 | 面向对象、设计原则、设计模式、编程规范、重构,这五者有何关系?


写在前面:

  • 以下为课程总结:
    在这里插入图片描述
  • 在留言区看到的留言:“面向对象是武器,设计模式是招式,设计原则是心法,以心法为基础,以武器运用招式应对复杂的编程问题”。

1 . 面向对象

1. 主流编程风格:面向过程、面向对象(最主流)、函数式编程

2. 这部分需要掌握的七个大的知识点:
	- 四大特性:封装、抽象、继承、多态
	- 面向对象与面向过程的区别和联系
	- 面向对象分析、面向对象设计、面向对象编程
	- 接口和抽象类的区别以及各自的应用场景
	- 基于接口而非实现编程的设计思想
	- 多用组合少用继承的设计思想
	- 面向过程的贫血模型和面向对象的充血模型

2 . 设计原则

1. 设计原则:抽象,定义描述比较模糊,不同的人会有不同的解读。

2. 对于每一种设计原则,我们需要掌握它的设计初衷,能解决哪些编程问题,有哪些应用场景。

3. 需要理解透彻并掌握:
   - SOLID 原则 -SRP 单一职责原则
   - SOLID 原则 -OCP 开闭原则
   - SOLID 原则 -LSP 里式替换原则
   - SOLID 原则 -ISP 接口隔离原则
   - SOLID 原则 -DIP 依赖倒置原则
   - DRY 原则、KISS 原则、YAGNI 原则、LOD 法则

3 . 设计模式

1. 设计模式:软件开发过程中总结出来的一套解决方案或者设计思路。

2. 大部分设计模式要解决的都是代码的可扩展性问题。

3. 学习难点:了解它们都能解决哪些问题,掌握典型的应用场景,并且懂得不过度应用。

4. 对于常用的设计模式,我们要花多点时间理解掌握。对于不常用的设计模式,我们只需要稍微了解即可。

5. 设计模式简单的分类:
    - 创建型:
     1.常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。
	 2.不常用的有:原型模式。
	
	- 结构型:
	 1. 常用的有:代理模式、桥接模式、装饰者模式、适配器模式。
	 2. 不常用的有:门面模式、组合模式、享元模式。
	
	- 行为型
	 1. 常用的有:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式。
	 2. 不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式。  

4 . 编程规范

1. 编程规范主要解决的是代码的可读性问题。

2. 更加具体、更加偏重代码细节。

3. 相关书籍:如《重构》《代码大全》《代码整洁之道》等。

4. 专栏总结了20 条规范。如果你暂时没有时间去看那些经典的书籍,看这些就够了。

5. 本专栏重构分为大重构和小重构两种类型,而小重构利用的知识基本上就是编码规范。

5 . 代码重构

1. 需要掌握以下几个知识点:
   - 重构的目的(why)、对象(what)、时机(when)、方法(how);
   - 保证重构不出错的技术手段:单元测试和代码的可测试性;
   - 两种不同规模的重构:大重构(大规模高层次)和小重构(小规模低层次)。

6 . 五者之间的联系

  • 面向对象编程是很多设计原则、设计模式等编码实现的基础。
  • 设计原则是是很多设计模式(策略、模板等)的指导
    原则。
  • 设计模式是解决方案。
  • 编程规范主要解决的是代码的可读性问题。
  • 重构作为保持代码质量不下降的有效手段。



04 | 理论一:当谈论面向对象的时候,我们到底在谈论什么?


1. 面向对象编程与面向对象编程语言

1. 面向对象编程: OOP, Object Oriented Programming。
	面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。

2. 面向对象编程语言: OOPL,Object Oriented Programming Language。
	面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。

3. 一般来讲, 面向对象编程都是通过使用面向对象编程语言来进行的,但是,不用面向对象编程语言,我们照样可以进行面向对象编程。

2. 如何判定某编程语言是否是面向对象编程语言?

- 面向对象编程语言: 某种编程语言支持类或对象的语法概念,并且以此作为组织代码的基本单元.

3.什么是面向对象分析和面向对象设计?

1. 面向对象分析: OOA,全称是 Object Oriented Analysis;
2. 面向对象设计: OOD,全称是 Object Oriented Design。
3. 面向对象?
	- 围绕着对象或类来做需求分析和设计的。
	- 分析和设计两个阶段最终的产出是类的设计,包括程序被拆解为哪些类,每个类有哪些属性方法,
	类与类之间如何交互等等。它们比其他的分析和设计更加具体、更加落地、更加贴近编码,更能够
	顺利地过渡到面向对象编程环节。这也是面向对象分析和设计,与其他分析和设计最大的不同点。

4. 面向对象分析就是要搞清楚 做什么,
5. 面向对象设计就是要搞清楚 怎么做,
6. 面向对象编程就是将分析和设计的的结果 翻译成代码的过程。

4. 什么是 UML?我们是否需要 UML?

1. UML(Unified Model Language),统一建模语言。
   很多讲解面向对象或设计模式的书籍,常用它来画图表达面向对象或设计模式的设计思路。

2. 能够达意,方便沟通就够了。



  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值