设计模式简介

讲师@李建忠

1.松耦合
2.oop
3.重构技法
4.GOF核心设计模式(23)

不断重复的问题- 核心方案,个人感觉还是抽象方法。

1.推荐教材

GOF 设计模式
Head first-建议先看这本,GOF那本在不了解的情况下估计会晕~

2.思维模型

1.底层思维

语言构造
1.传参,声明变量,函数,类…

2.一个类:
大小
放在哪里(堆或栈)
成员函数(静态,实例…)
初始化方式(拷贝构造,赋值操作符…)

3.why:
有什么
为什么东西而设计
为什么会有拷贝构造函数

4.when:调用和未调用

5.要还是不要
需要写拷贝构造
不需要写拷贝构造,编译器自动生成

6.for what

编译转换
1.背后干的一些事情(临时对象,空类…)
2.常见的类型
3.在某些层面的规则

内存模型
where(在哪里)—让我想到了一首儿歌…

堆-在特殊的场合中有着特殊的优化策略
静态字段
全局函数
实例函数
虚函数

内存图-代码 这两者之间是可以一 一映射的

运行时机制
异常处理
垃圾收集器
多态

高手大牛的一般都是从此混起。

2.抽象思维

面向对象,组件封装,设计模式,架构模式

深入了解:
向下:三大机制
封装:隐藏内部实现
继承:复用现有代码
多态:改写对象行为

向上:好的面向对象设计
抽象含义的理解
封装变化点
多态的核心问题:实现抽象的过程中,支持自己独立的变化。
继承:类型的抽象

解决复杂性:1.分解 复用性很低 2.抽象

重点不是掌握具体的代码,而是相应的思维模型。个人理解便是先把大体的框架搭好,即事物的总纲的把握。

C++提倡public继承。当需要多态性的时候,需要用到指针。

代码的重用性,软件设计的目标:复用。

面向对象最大优势:抵御变化

3.重新理解OOP

1.隔离变化,将变化减到最小
2.各司其职,每一个func或者class都有自己的责任
3.对象是什么:
语言层面:对象封装了代码和数据
规格层面:一系列可被使用的公共接口
概念层面:拥有某种责任的抽象

4.八大设计原则

1.依赖倒置原则(DIP)–important 贯穿于整个设计原则
举例:观察者模式—一个由文件分割器引起的设计模式

  • 高层模块的稳定不依赖于低层模块的变化,两者依赖抽象的稳定
  • 抽象稳定不依赖于细节的变化,实现细节应依赖于抽象的稳定

2.开放封闭原则(OCP)
举例:策略模式—一个由税计算引起的设计模式

  • 对扩展开发,对更改封闭
  • 类模块应该是可扩展的,但是不可修改

3.单一职责原则(SRP)

  • 一个类应该仅有一个引起它变化的原因
  • 变化的方向隐含着类的责任

4.Liskov替换原则(LSP)

  • 子类必须能够替换它们的基类(IS-A)
  • 继承表达类型抽象

5.接口隔离原则(ISP)

  • 不应该强迫客户程序依赖于它们不用的方法
  • 接口应该小而完备

6.优先使用对象组合,而不是类继承

  • 类继承通常为“白箱复用”,对象组合为“黑箱复用”
  • 继承在某种程度上破坏了封装性,子类父类耦合度高
  • 对象组合只要求被组合的对象有着良好的接口。

7.封装变化点

8.针对接口编程,而不是针对实现编程

面向接口设计:接口标准化

将设计原则提升为设计经验:

  1. 设计习语 Design Idioms
  2. 设计模式 Design Patterns
  3. 架构模式 Architectural Patterns

你可能感兴趣的:(设计模式,GeekBand,思维模型)