![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
心怀敬意
天接云涛连晓雾
展开
-
Head First设计模式读书笔记-第十三章 Pattern 模式
模式 模式是在某情境下,针对某问题的某种解决方案 情境:应用某个模式的情况 问题:想在某情境下达到目标,也可以氏某情境下的约束 解决方案:一个通用的设计,用来解决约束,达到目标 装饰者:包装一个对象,以提供新的行为 状态:封装基于状态的行为,并使用委托在行为之间切换 迭代器:在对象的集合之中游走,而不暴露集合的实现 外观:简化一群类的接口 策略:封装可互换的行为,并使用委托来决定要使用哪一个 代理:包装对象,以控制对此对象的访问 工厂方法:由子类决定要创建的具体类是哪一个 适配.原创 2020-08-16 11:10:53 · 181 阅读 · 0 评论 -
Head First设计模式读书笔记-第十二章 Pattern 模式的模式
模式的模式 模式通常被一起使用并被组合在同一个设计解决方案中 复合模式在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题。 复合模式是指一群模式被结合起来使用,以解决一般性问题 定义 MVC 模型-视图-控制器模式 模型:模型持有所有的数据,状态和程序逻辑。模型没有注意到视图和控制器,虽然它提供了操纵和检索状态的接口,并发送状态改变通知给观察者。 控制器:取得用户的输入并解读其对模型的意思 视图:用来呈现模型,视图通常直接从模型中取得它需要显示的状态与数据 ...原创 2020-08-16 11:08:55 · 126 阅读 · 0 评论 -
Head First设计模式读书笔记-第十一章 Proxy Pattern 代理模式
代理模式 代理:控制管理和访问 远程代理 制作远程服务的步骤: 制作远程接口 制作远程实现 利用rmic产生stub和skeleton 启动RMI registry 开始远程服务 原语类型(primitive)或者可序列化类型(Serializable):原语类型即基本类型,可序列化类型即实现Serializable接口的类型 transient:让JVM在反序列化字段的时候,忽略当前项 定义 代理模式:为另一个对象提供一个替身或占位符以控制对这个对象...原创 2020-08-16 11:07:55 · 171 阅读 · 0 评论 -
Head First设计模式读书笔记-第十章 State Pattern 状态模式
状态模式 策略模式是除继承外的一种弹性替换方案,通过组合不同的对象来改变行为 状态模式通过将行为包装进状态对象中,改变context行为 定义 允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类 示例 将行为封装进状态对象中,通过动态切换状态,来绑定行为 第十章总结 状态模式----封装基于状态的行为,并将行为委托到当前状态 策略模式----将可以互换的行为封装起来,然后使用委托的方法,决定使用哪一个行为 模板方法----由子类决定如何实现算法中的某些步骤 .原创 2020-08-16 11:06:22 · 117 阅读 · 0 评论 -
Head First设计模式读书笔记-第九章 Iterator And Composition Pattern 迭代器和组合模式
迭代器模式和组合模式 定义 迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 这种模式提供一种方法,可以顺序访问一个聚合对象中的元素,而不用知道内部如何表示。 迭代器模式分为,内部迭代器和外部迭代器。外部迭代器,自定义实现遍历,客户控制遍历的实现。内部迭代器则是由迭代器内部控制遍历过程。 单一责任:一个类应该只有一个引起变化的原因 类的每个责任都有改变的潜在区域。超过一个责任,意味着超过一个改变的区域,因此,尽量让每个类保持单一责任 ...原创 2020-08-16 11:04:40 · 124 阅读 · 0 评论 -
Head First设计模式读书笔记-第八章 templatePattern 模板模式
模板方法模式 好莱坞原则:别调用我们,我们会调用你。一种防止依赖腐败的方法,当高层组件依赖底层组件,而底层组件又依赖高层组件,而高层组件又依赖侧边组件,而侧边组件又依赖底层组件的时候,依赖腐败就发生了。 好莱坞原则和依赖倒置原则的区别:依赖倒置要求尽量避免使用具体类,多使用抽象类。好莱坞原则是创建框架或组件的一种技巧,创建一种弹性设计 定义 模板方法定义了一个算法步骤,并允许子类为一个或多个步骤提供实现 模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使..原创 2020-08-16 10:50:18 · 169 阅读 · 0 评论 -
Head First设计模式读书笔记-第七章 Adapter Pattern And Facade Pattern 适配器和外观模式
适配器模式和外观模式 适配器模式定义 将一个类的接口转换成客户期望的另一个接口。适配器让原本不兼容的类可以合作无间 对象适配器 使用对象组合,以修改的接口包装被适配者,被适配者的任何子类都可以配合适配器使用 类适配器 通过多继承,使被适配者可以以客户期望的方式被调用 对象适配器是组合,类适配器是多继承(继承的优点,可以覆盖子类的行为) 装饰者和适配器的区别 装饰者的主要作用是增强类的功能,循环增强 适配器是为了转换接口,两者的核心思想不一...原创 2020-08-16 10:48:56 · 273 阅读 · 0 评论 -
Head First设计模式读书笔记-第六章 Command Pattern 命令模式
命令模式 定义 将请求封装为对象,以便使用不同的请求、队列或日志来参数化其他对象,命令模式也支持可撤销的操作。 示例 以生活中的场景为例,电器的启动和关闭,这些功能封装为命令,通过命令去出发功能,所有的命令对象都实现统一的接口,规范其行为(excute、undo)。客户端只需要调用包含命令集合的调用者就可以启动或关闭对象的功能。下图的例子分别是标准命令模式的类图和宏命令模式的类图。 标准命令模式 宏命令模式 第六章总结 命令模式将发出请求的对象和执...原创 2020-08-16 10:45:13 · 118 阅读 · 0 评论 -
Head First设计模式读书笔记-第五章 Single Pattern 单例模式
单例模式(Singleton Pattern) 全局变量的缺点:如果在程序开始的时候创建全局变量,但是在某个特定的时间才使用到,这就导致资源的过度使用。应该是在需要的时候才创建变量。 单例模式使用技巧:利用私有构造器,只能在当前class中被调用 定义 确保一个类只有一个实例,并提供一个全局访问点。 示例 饿汉式:延迟加载,特点:构造器私有,声明类成员变量,通过公有方法实例化类成员变量并获取。线程不安全 饥汉式:立即加载,特点:构造器私有,类成员变量初始化并赋值,通过公有方法获取类成.原创 2020-08-16 10:43:41 · 169 阅读 · 0 评论 -
Head First设计模式读书笔记-第四章 Factory Pattern 工厂模式
工厂模式 简单工厂不是一种设计模式,可以称之为编程习惯,将变化抽离,做到程序之间解耦 静态工厂:利用静态方法定义一个简单的工厂;特点:不需要使用创建对象的方法来实力化对象,这也导致不能通过继承来改变创建方法的行为。 抽象工厂:定义抽象的产品族创建者,让具体的产品族创建者去创建产品。 定义 工厂方法模式:定义一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实力化推迟到子类。 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体...原创 2020-08-16 10:42:00 · 142 阅读 · 0 评论 -
Head First设计模式读书笔记-第三章 Decorator Pattern 装饰者模式
装饰者模式 随笔: 1.利用组合(Composition)和委托(delegation)使得运行时具有继承行为的效果; 2.利用继承设计子类的行为,是编译时静态决定的,而且所有的子类都会继承相同的行为;如果利用组合的做法扩展对象的行为,就可以运行时动态地扩展。 3.开闭原则需要遵循,但并不是所有的设计都要用到开闭原则,因为这样做的话,需要浪费大量的时间,得不偿失,而且过分追求完美也是一种缺陷。 特点: 装饰者和被装饰者有相同的超类型; 可以用一个或多个装饰者包装一个对象 装饰者和..原创 2020-08-15 11:24:56 · 150 阅读 · 0 评论 -
Head First设计模式读书笔记-第二章 Observer Pattern 观察者模式
观察者模式Observer 出版者+订阅者=观察者模式 定义 观察者模式定义了对象之间一对多的依赖,当一个对象状态发生改变的时候,它的所有依赖者都会收到通知并自动更新。 示例 以标准的观察者模式为例 定义Subject主题接口和消息的监听者Observer接口,分别规定接口的行为; 在Subject接口的实现类中保存Observer接口的属性列表,通过Subject中的注册Observer方法,将Observer对象维护在Subject实现类中。 设置Subject变更方法和Subje.原创 2020-08-15 11:22:32 · 122 阅读 · 0 评论 -
Head First设计模式读书笔记-第一章 Strategy Pattern 策略模式
第一章 继承的缺点:多个子类继承自同一个父类,当变更父类的时候,会导致某些子类添加不想要的属性或方法 软件设计总是在不停变更的,变更的原因多种多样, 设计原则: 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混合在一起。 针对接口编程,而不是针对实现编程。 多用组合少用继承 为了交互对象之间的松耦合设计而努力,松耦合将对象之间的互相依赖降到最低。 开发-关闭原则:类应该对扩展开放,对修改关闭。 依赖倒置原则(Dependency Inversion Princ.原创 2020-08-15 11:19:44 · 141 阅读 · 0 评论