设计模式
文章平均质量分 87
wangxin0314
一只站在树上的鸟儿,从来不会害怕树枝会断裂,因为它相信的不是树枝,而是它自己的翅膀。与其每天担心未来,不如努力做好现在。
展开
-
JAVA-享元设计模式
Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。________________________________________Java中的String类型 在JAVA语言中,String类型就是使用了享元模式。String对象是转载 2015-12-09 23:38:43 · 457 阅读 · 0 评论 -
JAVA-命令设计模式
定义将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。角色Command定义命令的接口,声明执行的方法。ConcreteCommand命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执转载 2015-12-16 21:40:28 · 417 阅读 · 0 评论 -
JAVA-观察者设计模式
观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。观察者模式(Observer)完美的原创 2015-12-16 21:01:12 · 494 阅读 · 0 评论 -
JAVA -备忘录设计模式
备忘录模式是一种软件设计模式:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式,是GoF的23种设计模式之一,属于行为模式。定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态原创 2015-12-21 20:22:41 · 866 阅读 · 0 评论 -
Java解释器模式
一、引子其实没有什么好的例子引入解释器模式,因为它描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中;在实际应用中,我们可能很少碰到去构造一个语言的文法的情况。 虽然你几乎用不到这个模式,但是看一看还是能受到一定的启发的。 二、定义与结构解释器模式的定义如下:定义语言的文法,并且建立一个解释器来解释该语言中的句子。它属于类转载 2016-01-07 10:21:07 · 389 阅读 · 0 评论 -
JAVA-状态设计模式
状态模式(State Pattern)是设计模式的一种,属于行为模式。 定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。 意图:允许一个对象在其内部状态改变转载 2015-12-23 09:34:18 · 387 阅读 · 0 评论 -
JAVA-中介者设计模式
Mediator中介者模式定义 Mediator 中介者,或者叫仲裁者,类似房屋的中介,比如演播室的主播和嘉宾,主播在说话的时候,嘉宾不能打断他,主播停止说话的时候嘉宾才能说话,主播则可以随时说话,这里还有一个中间人: 1.主播对中介者说,节目开始了,我要说话了 2.中介者看看嘉宾是不是在说话,如果是在说话,让他停止,让主播说,如果嘉宾没在说话,让主播说转载 2015-12-25 13:16:44 · 468 阅读 · 0 评论 -
JAVA-责任链模式
JAVA-责任链模式责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。==引用自在阎宏博士的《JAVA与模式》责任链:责任链模式涉及到的角色如下所示: ● 抽象处理者(H原创 2015-12-13 16:46:21 · 389 阅读 · 0 评论 -
Webdriver Ui自动化测试,使用工厂方法生产不同浏览器的webdriver实例
Webdriver Ui自动化测试,使用工厂方法生产不同浏览器的webdriver实例定义浏览器驱动实例的接口:package ec.qa.autotest.ui.utility.base;import org.openqa.selenium.remote.RemoteWebDriver;/** * 实例化目标浏览器接口 * @author xin.wang * */public interface IBrowserDriverBase { public原创 2015-12-16 18:10:52 · 2182 阅读 · 8 评论 -
MVC与三层架构区别
我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念。下面我来为大家揭晓我所知道的一些真相。首先,它俩根本不是一个概念。 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目。 MVC是一个设计模式,它是根据项目的具体需求来决定是否适用于该项目。 那么架构跟设计模式有什么区别呢? 我们从接手一个项目开始,首先,我们需要进行架构设转载 2016-04-25 13:14:07 · 455 阅读 · 0 评论 -
深入浅出Java回调机制
前几天看了一下Spring的部分源码,发现回调机制被大量使用,觉得有必要把Java回调机制的理解归纳总结一下,以方便在研究类似于Spring源码这样的代码时能更加得心应手。 注:本文不想扯很多拗口的话来充场面,我的目的是希望以最简明扼要的语言将Java回调的大概机制说清楚。好了,言归正传。 一句话,回调是一种双向调用模式,什么意思呢,就是说,被调用方在被调用时也会调用对方,这就叫回转载 2016-07-19 17:00:28 · 527 阅读 · 0 评论 -
JAVA List删除时需注意的地方
JAVA的LIST在删除时,一般会用list.remove(o); 但这样往往会出现问题,先来看下面的这段代码:1234567891011121314151617181920212223转载 2016-11-22 20:05:48 · 395 阅读 · 0 评论 -
SpringMVC 中的Interceptor 拦截器
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间。 一、定义Interceptor实现类 SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor 来实现的。在转载 2016-12-07 19:06:30 · 263 阅读 · 0 评论 -
设计模式六大原则
设计模式六大原则(1):单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,转载 2017-04-11 17:30:37 · 220 阅读 · 0 评论 -
JAVA-迭代子模式简单实现
迭代子(Iterator)模式的结构迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。迭代子可分为外禀迭代子和内禀迭代子。外禀迭代子适合于白箱聚集(白箱聚集就是向外界提供访问自己内部元素接口的聚集),由于迭代的逻辑是由聚集对象本身提供的,所以这样的外禀迭代子角色往往仅仅保持迭代的游标位置。所以具体迭代子角色是一个外部类,它的构造函数接受一个具体聚集对象,从原创 2015-12-15 22:16:37 · 535 阅读 · 0 评论 -
JAVA-外观模式
外观模式 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。 结构:Facade这个外观类为子系统提供一个共同的对外接口Clients客户对象通过一个外观接口读写子系统中各接口的数据资源。适用场景:在以下情况下可以考虑使用外观模式:原创 2015-12-14 18:59:40 · 428 阅读 · 0 评论 -
JAVA-桥接设计模式
桥接模式是一种结构型模式,它主要应对的是:由于实际的需要,某个类具有两个或两个以上的维度变化,如果只是用继承将无法实现这种需要,或者使得设计变得相当臃肿。 桥接模式的做法是把变化部分抽象出来,使变化部分与主类分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。 桥接模式是一种结构型模式,它主要应对的是:由于实际的需要,原创 2015-12-14 20:40:23 · 538 阅读 · 0 评论 -
JAVA-工厂方法设计模式
工厂方法模式(Factory Method):定义一个用于创建对象的接口IProductFactory,在具体的CreateProdcutFactory子类的CreateProduct方法中根据传进的参数即具体产品类的类型决定实例化哪一个IProduct产品,如果有新添加的产品,只要在客户端修改传给CreateProduct方法的参数即可,符合面相对象的“开闭原则”,适用性:1.当一个类不原创 2015-12-12 14:24:15 · 451 阅读 · 0 评论 -
JAVA-抽象工厂模式
抽象工厂模式是设计模式工厂设计模式较为复杂的一种设计模式,英文概念翻译是:为创建一组相关或相互依赖的对象提供一个借口,无需指定它们的具体类”。抽象工厂模式通常是用于创一族产品,并且这族产品分不同的等级;不同的具体工厂类生产不同等级的一族产品。抽象工厂模式也有四种角色:抽象工厂、具体工厂、抽象产品和具体产品.典型的面向接口/抽象类的编程模式。抽象工厂模式的类图:代码示例:原创 2015-12-09 22:45:25 · 357 阅读 · 0 评论 -
JAVA-策略设计模式
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。引用其他人的解释:策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。示范代码工程:示范工程实现的是 对不同的动物根据动物的属性原创 2015-12-12 14:54:34 · 473 阅读 · 0 评论 -
Spring AOP 详解
文章出处:http://pandonix.iteye.com/blog/336873/ 此前对于AOP的使用仅限于声明式事务,除此之外在实际开发中也没有遇到过与之相关的问题。最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP 来解决。一方面是为了以更加灵活的方式来解决问题,另一方面是借此机会深入学习Spring AOP相关的内容。本文是权当本人的自己AOP学习笔记,以下需求不用转载 2015-12-13 17:02:23 · 369 阅读 · 0 评论 -
JAVA-建造者设计模式
文章转自:http://haolloyin.blog.51cto.com/1177454/333155/建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。使用场景:1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2、当构造过程必须允许被构造的对象有不同的表示时。通用类图转载 2015-12-13 13:48:49 · 500 阅读 · 0 评论 -
JAVA-堆区,栈区,方法区。
堆区:村线程操纵的数据(对象形式存放)1 存储的全部是对象,每个对象包含一个与之对应的class信息--class的目的是得到操作指令2 jvm只有一个堆区(heap)被所有线程共享,堆区中不存放基本类型和对象引用,只存放对象本身。栈区:1 每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象)。对象都存放在堆区中。2 每个转载 2015-12-14 12:35:49 · 7465 阅读 · 3 评论 -
JAVA-装饰器模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述装饰(Decorator)模式的: 装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情转载 2015-12-14 15:19:00 · 387 阅读 · 0 评论 -
JAVA-适配器模式
在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。基本概念客户:需要调用我们的代码的对象。Adapter模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。主要内容(1)类适配器:原创 2015-12-14 14:53:27 · 449 阅读 · 0 评论 -
JAVA-单例模式的七种写法
转载出处:http://cantellow.javaeye.com/blog/838473第一种(懒汉,线程不安全): 1 public class Singleton { 2 private static Singleton instance; 3 private Singleton (){} 4 public sta转载 2015-12-13 13:22:53 · 421 阅读 · 0 评论 -
泛型的内部原理:类型擦除以及类型擦除带来的问题
一、Java泛型的实现方法:类型擦除前面已经说了,Java的泛型是伪泛型。为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理解类型擦出(type erasure)。Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数,会在编译器在编译的时候去掉转载 2015-12-13 07:16:06 · 2102 阅读 · 0 评论 -
JAVA-原型模式
原型模式是一种创建型设计模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例.被复制的实例就是我们所称的原型,这个原型是可定制的.原型模式多用于创建复杂的或者耗时的实例, 因为这种情况下,复制一个已经存在的实例可以使程序运行更高效,或者创建值相等,只是命名不一样的同类数据.原型模式中的拷贝分为"浅拷贝"和"深拷贝":浅拷贝: 对值类型的成员变量进行值的复制,对引用类型的成员原创 2015-12-14 13:43:54 · 635 阅读 · 0 评论 -
设计模式的分类及原则
设计模式(Design Patterns) ——可复用面向对象软件的基础设 计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代 码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计转载 2015-12-14 12:07:41 · 640 阅读 · 0 评论 -
JAVA-模板设计模式
模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。(引用自阎宏博士的《JAVA与模式-模板方法》。模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。原创 2015-12-13 13:03:48 · 1419 阅读 · 2 评论 -
B树在存储中的作用和优点
1.http://blog.csdn.net/ch18255112191/article/details/48246939 B树的增加删除节点的原理2.http://blog.csdn.net/xrymibz/article/details/72420607 机械硬盘的工作原理我们知道,机械硬盘耗费时间最多的地方在于寻道地址。在数据结构中,如果我们采用二叉树存数数据,那么频繁的增加和...转载 2018-12-03 14:36:27 · 2260 阅读 · 0 评论