设计模式
Mason97
这个作者很懒,什么都没留下…
展开
-
Head First 设计模式 读书笔记
1. 策略模式例子:一个鸭子类的飞翔行为:不能飞;正常飞;火箭助推…(都实现飞翔接口)。我们在鸭子类中增加一个飞翔行为对象。通过设置具体鸭子(继承于鸭子类)的飞翔行为对象,描述它的具体飞翔方式定义:定义算法族,封装起来,可以相互替换,让算法的变化独立于使用算法的客户。2. 观察者模式...原创 2020-11-08 16:58:41 · 157 阅读 · 0 评论 -
设计模式 之 单例模式
定义:确保一个类只有一个实例,并提供一个全局的访问点/** * 设计一个单例模式的类 */public class Demo02 { // 私有的空参构造方法 private Demo02() { } // 私有的静态成员变量 private static Demo02 uniqueInstance = new Demo02(); // 能够返回唯一的对象的方法公共静态方法 public static Demo02 getInstance(原创 2020-05-20 11:22:16 · 100 阅读 · 0 评论 -
设计模式 之 观察者模式
观察者模式定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新解决的问题:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。理解:“一”就相当于报社,“多”就相当于订这家报社的人,如果有新闻,报社就会把报纸派发给所有订报纸的人。【报社内部有一个订报纸的人的列表】可观察者不需要知道观察者的具体类是谁,做了些什么或其他任何的细节。主题不在乎别的,它只会发送通知给所有实现了观察者接口的对象。关键代码:在可观察原创 2020-05-12 21:56:37 · 98 阅读 · 0 评论 -
设计模式 之 策略模式
策略模式定义:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。诀窍:多用组合,少用继承;针对接口编程,不针对实现编程。举例子:将weapon独立起来。public class Fighter { Weapon weapon; public void fight() { weapon.attack(); } public void setWeapon(Weapon weapon) {原创 2020-05-12 20:28:46 · 109 阅读 · 0 评论 -
动态代理
分类:基于接口的动态代理基于子类的动态代理特点:字节码随用随创建,随用随加载作用不修改源码的基础上对方法增强基于接口的动态代理:涉及的类:Proxy提供者:JDK官方如何创建代理对象:使用Proxy类中的newProxyInstance方法创建代理对象的要求: 被代理类最少实现一个接口,如果没有则不能使用newProxyInstance方法的参数:Cla...原创 2020-04-14 14:52:34 · 99 阅读 · 0 评论