Head First 设计模式笔记(第十章 状态模式 & 第十一章 代理模式)

第十章 状态模式 p385~428, 第十一章 代理模式 p429~p497.

概述

状态模式, 一个对象有多个状态和多个方法, 方法内需要根据状态去判断, 所以方法内有多个if-else. 代码的耦合性很高, 需要增加新的状态比较麻烦. 所以将每个状态都设计成一个类, 都实现共同的几个方法, 效果是将方法内的多个if-else拆分到各个类的方法中去.

代理模式, 隐藏真实对象, 利用proxy对象访问真实对象的方法, 有远程代理, 虚拟代理, 保护代理等.

状态模式

允许对象在内部状态改变时改变它的行为, 对象看起来好像修改了它的类

代理模式

为另一个对象提供了一个替身或者占位符以控制对这个对象的访问

AOP编程用到了代理模式. 利用jdk的动态代理, 你每次不是直接使用对象, 而是使用对象的Proxy, 这样就可以在Proxy中加一些通用的操作, 如日志, 事务等.

现实场景

状态模式

状态较少时, if-else就解决了. 状态较多时, 可以试着使用状态模式.

代理模式

学习下AOP

原文地址:https://www.cnblogs.com/winwink/p/HeadFirstPattern_P6_State_Proxy.html