[读书笔记] Head First 设计模式

时间:2022-11-15 06:36:00

OO基础

  • 抽象
  • 封装
  • 多态
  • 继承

OO原则

原则 描述
封装变化

找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混合在一起。

把会变化的部分取出来并“封装”起来,好让其他部分不受到影响。

多用组合,少用继承

使用组合建立系统具有很大的弹性,不仅可以将“算法族”封装成类,更可以“在运行时动态地改变行为”,只要组合的行为对象符合正确的接口标准即可。

利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。

针对接口编程,不针对实现编程 针对接口编程,真正的意思是针对“超类型”编程,关键就在多态。
为交互对象之间的松耦合设计而努力  
类应该对外扩展开放,对修改关闭  
依赖倒置原则

要依赖抽象,不要依赖具体类。

该原则相对于“针对接口编程,不针对实现编程”来说,更加强调“抽象”。

该原则说明:

  1. 不能让高层组件依赖低层组件

    1.1 当你直接实例化一个对象时,就是在依赖它的具体实现

    1.2 所谓"高层"组件,是由其他低层组件定义其行为的类

  2. 不管高层组件还是低层组件,都应该依赖抽象

最少知识原则(墨忒耳法则) 只和你的密友谈话
好莱坞原则

别调用(打电话给)我们,我们会调用(打电话给)你

将决策权放在高层模块中,以便决定如何以及何时调用低层模块。

单一原则 一个类应该只有一个引起变化的原因

OO模式

模式不是代码,而是针对设计问题的通用解决方法。

模式是在某情境下,针对某问题的某种解决方案。

模式是工具而不是规则,需要被适当第调整以符合你的需求。

模式 描述
装饰者 包装一个对象,以提供新的行为。不改变接口,但加入责任
状态 封装基于状态的行为,并使用委托在行为之间切换
迭代器 在对象的集合之中游走,而不暴露集合的实现
外观 提供子系统的一个简化接口,简化一群类的接口
策略 使用组合封装算法。封装可互换的行为,然后使用委托来决定要采用哪一个行为
代理 包装对象,以控制对此对象的访问
工厂方法 由子类决定实例化哪个具体类。
适配器 封装对象,将一个接口转换成另一个接口
观察者 当某个状态改变时,允许一群对象能被通知到
模板方法 使用继承封装算法。子类决定如何实现算法中的步骤
单件 确保有且只有一个对象被创建
组合 客户用一致的方式处理对象集合和单个对象
抽象工厂 允许客户创建对象的家族,而无需指定他们的具体类。
命令 封装请求成为对象

模式可以按照下面的来分类

类别 描述 模式
创建型模式 创建型模式涉及到将对象实例化,这类模式都提供一个方法,将客户从所需要实例化的对象中解耦。

Builder

Prototype

单件模式(Singleton)

工厂模式

  简单工厂模式

  工厂方法模式(Factory Method)

  抽象工厂模式(Abstract Factory)

行为型模式 只要是行为型模式,都涉及类和对象如何交互及分配责任。该模式的目的是对象之间的沟通与互联。

Visitor

Mediator

Memento

Interpreter

Chain of Responsibility

模板方法(Template Method)

命令模式(Command)

策略模式(Strategy)

状态模式(State)

观察者模式(Observer)

迭代器模式(Iterator)

结构型模式 结构型模式可以让你把类和对象组合到更大的结构中。用来描述类和对象如何被组合以建立新的结构或新的功能。

Bridge

Flyweight

装饰者模式(Decorator)

适配器模式(Adapter)

外观模式(Facade)

组合模式(Composite)

代理模式(Proxy)

同样,也可以按照下面的方式来分

类别 描述 模式
类模式 描述类之间的关系如何通过继承定义。类模式的关系是在编译时建立的。

模板方法(Template Method)

工厂方法模式(Factory Method)

适配器模式(Adapter)

Interpreter

对象模式 描述对象之间的关系,而且主要是利用组合定义。对象模式的关系通常在运行时建立,而且更加动态、更具有弹性。

组合模式(Composite)

装饰者模式(Decorator)

代理模式(Proxy)

策略模式(Strategy)

Bridge

Flyweight

抽象工厂模式(Abstract Factory)

单件模式(Singleton)

Visitor

迭代器模式(Iterator)

命令模式(Command)

外观模式(Facade)

Memento

观察者模式(Observer)

Chain of Responsibility

Mediator

Prototype

状态模式(State)

Builder

类图

策略模式

[读书笔记] Head First 设计模式

抽象工厂模式

[读书笔记] Head First 设计模式

代理模式

[读书笔记] Head First 设计模式

迭代器模式

[读书笔记] Head First 设计模式

工厂方法模式

[读书笔记] Head First 设计模式

观察者模式

[读书笔记] Head First 设计模式

简单工厂模式

[读书笔记] Head First 设计模式

命令模式

[读书笔记] Head First 设计模式

模板方法

[读书笔记] Head First 设计模式

适配器模式

[读书笔记] Head First 设计模式

外观模式

[读书笔记] Head First 设计模式

装饰者模式

[读书笔记] Head First 设计模式

状态模式

[读书笔记] Head First 设计模式

组合模式

[读书笔记] Head First 设计模式