- 博客(20)
- 资源 (15)
- 问答 (4)
- 收藏
- 关注
转载 备忘录模式
主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些,通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作。做个图来分析一下:Original类是原始类,里面有需要保存的属性value及创建一个备忘录类,用来保存value值。Meme
2015-03-26 17:16:16 3636
原创 解释器模式
解释器模式的类图如下: 定义了上下文对象,在对象中有两个数,我们要对这两个数进行对应的运算。我们在接口中定义了解释器,其中有一个解释的方法。在加法中我们实际的解释加的具体操作是什么。 [java] view plaincopypublic interface Expression { public int interpre
2015-03-26 17:08:22 3963
转载 迭代子模式(Iterator)
顾名思义,迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见,如果对集合类比较熟悉的话,理解本模式会十分轻松。这句话包含两层意思:一是需要遍历的对象,即聚集对象,二是迭代器对象,用于对聚集对象进行遍历访问。我们看下关系图: public interface Collection { public Iterator i
2015-03-23 14:26:39 4502
原创 享元模式(Flyweight)
享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查当前对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建一个新对象,FlyWeight是超类。一提到共享池,我们很容易联想到Java里面的JDBC连接池,想想每个
2015-03-20 14:08:41 3922
原创 组合模式(Composite)
组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便,看看关系图public class TreeNode { private String name; private TreeNode parent; private Vector children = new Vector();
2015-03-20 14:02:42 4156
转载 外观模式(facade)
外观模式是为了解决类与类之间的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过程为例)public class CPU { public void startup
2015-03-20 13:28:49 3785
转载 适配器模式
1.类的适配器模式public class Source { public void method1() { System.out.println("this is original method!"); } }public interface Targetable {
2015-03-20 13:05:43 3727
原创 观察者模式
观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事情,并且将他做好。观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。观察者设计模式定义了
2015-03-14 09:40:42 4382
原创 原型模式
原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java虚拟机中,只有实现了这个接口的类才可以被拷贝,否则在运行时会抛出CloneNotSupportedEx
2015-03-14 09:23:04 4012
原创 代理模式
package mode.proxy;/** * * 这里的代理模式是通过接口方式实现的 * * */public interface NetWork { public void browser();}package mode.proxy;public class Real implements NetWork { @Override public voi
2015-03-13 13:48:54 3559
原创 策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。—抽象策略角色: 策略类,通常由一个接口或者抽象类实现。—具体策略角色:包装了相关的算法和行为。—环境角色:持有一个策略类的引用,最终给客户端调用。package mode.strategy;/** * @ClassName: IStr
2015-03-13 13:39:43 3450
原创 模版方法模式
在软件开发中有时候会遇到这样的情况,某个功能的实现需要多个步骤,这些步骤都是很明确的(第一步是什么,第二步是什么...比如做配菜:第一步是洗菜,第二步是切菜,第三步是装盘);其中某些步骤的做法是固定的(例如洗菜--用水泡洗干净、装盘--把菜摆放到盘子里),而有些步骤的做法就不确定(例如切菜--可以切丁、切块、切片。。。)。所以就有了模版方法模式,在模版方法模式中有一个抽象类,在该抽象类中有一个fi
2015-03-11 13:56:55 3594
原创 中介者模式
中介者模式(Mediator Pattern):定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。package mode.mediator;import java.util.Hashtable;public abstract class AbstractMediator { //定义一个哈希表来存放
2015-03-11 13:02:25 3328
原创 访问者模式
访问者模式适用于数据结构相对稳定但算法易于变化的系统。简单来说,访问者模式就是一种分离对象数据结构与行为的方法,通过这种分离,可达到为一个被访问者添加新的操作而无需做其他的修改效果。package mode.visitor;/**定义被访问对象的接口,这里在接口中定义了accept方法,用来接收不同的visitor实体,做不同的访问工作; * 同时在接口中定义了subject属性的get
2015-03-10 15:18:50 3456
原创 状态模式
状态模式,就是定义一个状态类,在这个状态类中有一个状态属性,来标明当前所处的状态;还有不同状态下要执行的方法。这些状态要暴露给外界,如外界通过不同的状态来执行不同的操作。就比如QQ的在线,忙碌,隐身等各种状态的实现。package mode.state;/** * * 定义状态类 * * */public class State { private String value
2015-03-10 13:36:21 3445
原创 抽象工厂模式
抽象工厂模式是对工厂方法模式的改进:在工厂方法模式中,如果增加了新的产品那么就必须进入到工厂中去添加新的方法来产生新的产品,这样的方式对代码开发不是很友好。而抽象工厂模式就不同,在增加了新的产品以后,只需要再写一个相应的工厂即可。package mode.abstract_factory;/*抽象的水果工厂*/public interface AbstractFruitFactory {
2015-03-10 11:29:22 3803
原创 对象的深度复制
首先什么是深度复制?什么又是浅复制?百度告诉我--------------->浅复制:将一个对象复制后,基本类型都会重新创建,而引用类型指向的还是原对象所指的引用;深复制:讲一个对象复制后,不论是基本类型还是引用类型都是重新创建的。下面看我们的深度复制方法package everyworkdayprogramming._2015_3_03;import java.i
2015-03-04 11:30:35 3697
原创 静态方法工厂模式
工厂模式有三种方法来实现,一种是通过传入参数的名称来决定创建哪一个产品,这种方法有很大的缺点,就是如果传入的产品名称如果不小心错误的话,就是无法来创建我们想得到的产品的。另一种是方法工厂模式,这种工厂模式中对应每一个产品有一个创建方法,这样创建了工厂实例以后,直接通过工厂实例就可以调用相应的产品的创建方法来创建我们需要的产品。但是这种工厂模式需要创建工厂实例,一个工厂可能使用的地方有很多,一直创建
2015-03-04 08:59:25 3741
原创 单例模式
package mode.single;public class Single { private static Single single; private Single() { } public static Single getInstance() { if (null == single) { System.out.println("第一次创建"); sin
2015-03-03 11:36:01 3471
原创 创建者模式 builder
package mode.bulider;/** * * 首先是汽车,组成零件有:玻璃、轮胎、发动机;他们都是抽象的概念,所以用抽象类来创建 * * */public class Car { Glass glass; Wheel wheel; Engine engine;}package mode.bulider;/** * * 抽象的玻璃
2015-03-02 08:38:00 3934 1
修改后的pushlet的jar包和js
2016-04-07
跨AP的三层漫游
2015-12-24
建立开放式的无线接入服务
2015-12-24
RIP路由协议基本配置
2015-12-24
网络课程工程案例实验报告
2015-12-22
Nginx负载均衡upstream这样配置对不对
2017-12-12
m安装了clojure插件counterclockwise
2016-11-17
stoem trident中无法理解的一段代码
2016-10-26
请大家帮我解释一下这个mysql语句是什么意思呢
2016-09-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人