java学习笔记_设计模式
thewaiting
https://github.com/xiechongyang7
展开
-
学习笔记——JAVA设计模式<15>命令模式
命令模式command将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。也称之为:动作Action模式,事务transaction模式结构 –Commend抽象命令类 –ConcreteCommand具体命令类 –Invoker调用者/请求者 请求的发送者,他通过命令对象来执行请求。一个调用者并不需要在原创 2017-06-15 20:18:46 · 192 阅读 · 0 评论 -
学习笔记——JAVA设计模式<5>适配器模式
结构型模式 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题 分类 适配器模式,代理模式,桥接模式,装饰模式,组合模式,外观模式,享元模式适配器模式adapter适配器模式 将一个类的接口转换成客户希望的另一个接口。adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作 模式中的角色原创 2017-06-13 15:41:54 · 276 阅读 · 0 评论 -
学习笔记——JAVA设计模式<6>代理模式
代理模式Proxy pattern 核心作用 通过代理,控制某个对象的访问,可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理从而实现将统一流程代码放到代理类中处理,调用这个方法后做后置处理。(即 AOP的微观实现 AOP(Aspect Oriented Programming面向切面编程)的核心机制)核心角色 抽象角色 定义代理角色和真实角色原创 2017-06-13 17:48:15 · 355 阅读 · 0 评论 -
学习笔记——JAVA设计模式<7>桥接模式
桥接模式Bridge核心要点 处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联类要遵守单一职责桥接模式可以取代多层继承的方案。多层继承违背单一职责原则,复用性差,类的个数也非常多。桥接模式可以极大的减少子类的个数,从而降低了管理和维护的成本 桥接模式极大的提高了系统的可拓展性,在两个变化维度中任意扩展一个维度,都不需要修改原原创 2017-06-13 20:23:37 · 186 阅读 · 0 评论 -
学习笔记——JAVA设计模式<8>组合模式
组合模式composite 树形结构就用组合模式 组合模式核心 抽象构件(component)角色:定义了叶子和容器构建的共同特点 叶子构件(Leaf)角色:无子节点 容器构件(Composite)角色:有容器特征,可以包含子节点运用的场景 把部分和整体的关系用树形结构来表示;从而使客户端可以使用统一的方式处理部分对象和整体结构组合和组合模式不是原创 2017-06-13 21:57:52 · 240 阅读 · 0 评论 -
学习笔记——JAVA设计模式<9>装饰模式
装饰模式decorator职责 动态的作为一个对象添加新的功能 装饰模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀实现细节 Component抽象构件角色 真实对象和装饰对象有相同的接口。这样,客户端对象就能够以与真实对象相同的方式同装饰对象交互 C原创 2017-06-14 15:18:52 · 233 阅读 · 0 评论 -
学习笔记——JAVA设计模式<10>外观模式
外观模式迪米特法则(最少知识原则) 一个软件的实体应当尽可能少的与其他实体发生互相作用外观模式核心 为子系统提供统一的入口。封装子系统的复杂性,便于客户端调用。模拟注册公司package studyGFO;//工商局public interface ICB { void checkName();//检查注册名}class huoxingICB implemen原创 2017-06-14 16:50:52 · 210 阅读 · 0 评论 -
学习笔记——JAVA设计模式<11>享元模式
享元模式FlyWeight 场景 内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或相似的对象,我们可以通过享元模式,节省内存。 核心 享元模式以共享的方式高效地支持大量细粒度对象的重用。 享元模式对象能做到的共享的关键是区分了内部状态和外部状态 内部状态:可以共享,不会随环境变化而改变 外部状态:不可以共享,会随着环境变化而改变享元模式实现原创 2017-06-14 17:39:04 · 239 阅读 · 0 评论 -
学习笔记——JAVA设计模式<12>责任链模式
创建型模式 关注对象的创建过程结构型模式 关注对象和类的组织行为型模式 关注系统中对象之间的相互交互,研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责,共有11种模式行为型模式 1. 责任链模式 2. 命令模式 3. 解释器模式 4. 迭代器模式 5. 中介者模式 6. 备忘录模式 7. 观察者模原创 2017-06-14 21:37:47 · 215 阅读 · 0 评论 -
学习笔记——JAVA设计模式<13>迭代器模式
迭代器模式iterator场景 - 提供一种可以遍历聚合对象的方式。又称为游标cursor模式 - 聚合对象:存储数据 - 迭代器:遍历数据结构 –聚合对象:存储数据 –迭代器:遍历数据代码实现package studyGFO;/** * 自定义迭代器接口 * @author http://blog.csdn.net/thewaiting * *原创 2017-06-15 16:00:04 · 183 阅读 · 0 评论 -
学习笔记——JAVA设计模式<4>原型模式
原型模式prototype 通过new产生一个对象需要非常繁琐的数据准备和访问权限,则可以使用原型模式 java中的克隆模式,以某个对象为原型,复制出新的对象。显然新的对象具备原型对象的特点 优势:效率高(直接克隆,避免了重新执行构造的过程步骤) 克隆类似于new,但不同于new。new创建的新对象属性采用默认值。克隆出来的对象属性值和原型对象相同,并且克隆出原创 2017-06-12 18:47:28 · 201 阅读 · 0 评论 -
学习笔记——JAVA设计模式<3>建造者模式
建造者模式 分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用 由于实现了构建和装配的解耦。不同的构造器,相同的装配,也可以做出不同的对象;相同的构造器,不同的装配顺序也可以做出不同的对象。也就是实现了构造算法,装配算法的解耦,实现了更好的复用。工厂模式创建产品 建造者原创 2017-06-12 16:37:23 · 234 阅读 · 0 评论 -
学习笔记——JAVA设计模式<16>解释器模式
解释器模式Interpreter–是一种不常用的设计模式 –用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计 –当我们需要开发一种新的语言时,可以考虑使用解释器模式 –尽量不要使用解释器模式,后期维护会有很大的麻烦。在项目中,可以使用Jruby,Groovy,Java的js引擎来代替解释器的作用,弥补java语言的不足开发中的场景 –EL表达式式的处理原创 2017-06-15 21:31:57 · 202 阅读 · 0 评论 -
学习笔记——JAVA设计模式<17>访问者模式
访问者模式Visitor 模式动机 –对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访,不同的访问者其访问方式也有所不同。 定义 –表示一个作用于某对象结构中的各元素的操作,它使我们可以子啊不改变某个元素的类的前提下定义作用于这些元素的新操作。开发中场景(应用范围非常窄,了解即可) –XML文档的解析器设计原创 2017-06-15 21:53:11 · 248 阅读 · 0 评论 -
学习笔记——JAVA设计模式<18>策略模式
策略模式strategy–策略模式对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便的更换算法或者增加新的算法。并且由客户端决定调用哪个算法。本质: –分离算法,选择实现模拟客户打折package studyGFO;public interface Strategy { public double getPrice(double standPri原创 2017-06-15 21:56:41 · 175 阅读 · 0 评论 -
学习笔记——JAVA设计模式<19>模板方法模式
模板方法模式template method–模板方法模式是编程中经常得到模式。它定义了一个操作中的算法骨架,将具体步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤核心 –处理某个流程的代码已经都具备,但是某个节点的代码暂时不能确定。因此,我们采用工厂方法模式,将这个节点的代码实现转移给子类完成。即:处理步骤父类中定义好,具体实现延迟到子类中定义 –原创 2017-06-16 13:18:16 · 282 阅读 · 0 评论 -
学习笔记——JAVA设计模式<20>状态模式
状态模式state核心 –用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题 结构 –Context环境类 环境类中维护一个state对象,他是定义了当前的状态 –State抽象状态类 –ConcreteState具体状态类 每一个类封装了一个状态对应的行为模拟订住客房package studyGFO;public interface State { void han原创 2017-06-16 14:10:49 · 280 阅读 · 0 评论 -
学习笔记——JAVA设计模式<21>观察者模式
观察者模式Observer核心 –观察者模式主要用于1:N的通知。当一个对象(目标对象Subject或Objservable)的状态变化时,他需要及时告知一系列对象(观察者对象,Observer),令他们做出响应 –通知观察者的方式 推:每次都会把通知以广播方式发送给所有的观察者,所有观察者只能被动接受 拉:观察者只要直到有情况即可。至于什么时候获取内容,获取什么内容都可以自主决定代码实现p原创 2017-06-16 18:17:44 · 314 阅读 · 0 评论 -
学习笔记——JAVA设计模式<22>备忘录模式
备忘录模式memento核心 –就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态结构 –源发器类Originator –备忘录Memento –负责人类CareTake代码实现package studyGFO;/** * 源发器类 * 保存雇员的信息 * @author http://blog.csdn.net/thewaiting * */public原创 2017-06-16 21:00:03 · 233 阅读 · 0 评论 -
学习笔记——JAVA设计模式<1>单例模式
Group of four GFO23种设计模式 创建型模式建对象 单例模式 工厂模式 抽象工厂模式 建造者模式原型模式 结构性模式 适配器模式 桥接模式 装饰模式 组合模式 外观模式 享元模式 代理模式 行为模式 横版方法模式 命令模式 迭代器模式 观察者模式 中介者模式 备忘录模式 解释器模式 状态模式 策略模式 职责链模式 访问者模式单例模式原创 2017-06-11 14:53:43 · 292 阅读 · 0 评论 -
学习笔记——JAVA设计模式<2>工厂模式
工厂模式 实现了创建者和调用者的分离 详细分类 简单工厂模式 工厂方法模式 抽象工厂模式 面向对象设计的基本原则 OCP(开闭原则 Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭 DIP(依赖倒转原则 Dependence Inversion Principle):原创 2017-06-11 20:28:48 · 222 阅读 · 0 评论 -
学习笔记——JAVA设计模式<14>中介者模式
中介者模式Mediator中介者模式核心 如果一个系统中对戏那个之间的联系呈现为网状结构,对象之间存在大量的多对多关系,将导致关系及其复杂,这些对象称为“同事对象”我们可以引入一个中介对象,使各个同事对象只跟中介者对象打交道,将复杂的网状结构变为星状结构原创 2017-06-15 16:39:31 · 240 阅读 · 0 评论