随笔分类 - java设计模式
摘要:chain of responsibility 职责链设计模式是用一系列的classes处理一个请求,来一个请求,a先处理,如果没有处理,则b 处理,如果没有处理,则由c处理,这样传递一个请求示例代码如下:方式一:=============/*** 多个请求** @time 下午11:55:14* @author retacn yue* @Email zhenhuayue@sina.com*/public interface Handler {// 方式一// public void hanlderHelp();// public void hanlderPrint();// public v
阅读全文
摘要:strategy 策略设计模式定义一系列算法,把这些算法一个个封装成独立的类示例代码如下/**** @time 下午08:59:41* @author retacn yue* @Email zhenhuayue@sina.com*/public abstract class RepTempRule {protected String oldString = "";protected String newString = "";public String getNewString() {return newString;}public void setOl
阅读全文
摘要:/*** 模版** @time 下午09:58:00* @author retacn yue* @Email zhenhuayue@sina.com*/public abstract class Benchmark {/*** 具体操作由子类来实现*/public abstract void benchmark();/*** 执行benchmark 的次数*/public final long repeat(int count) {if (count <= 0) {return 0;} else {long starTime = System.currentTimeMillis();fo
阅读全文
摘要:observer设计者模式示例代码如下:/*** 商品** @time 下午09:37:56* @author retacn yue* @Email zhenhuayue@sina.com*/public class Procuct extends Observable {private String name;private float price;public String getName() {return name;}public void setName(String name) {this.name = name;// 设置变们点setChanged();notifyObserve
阅读全文
摘要:command命令设计模式类似于callback的功能,就是将所有事件的处理方法归并到一起,客户端不需要知道具体处理代码。这样在以command中代码发生变化时,客户端不需要作修改示例代码如下:/*** 命令设计模式接口** @time 下午09:36:40* @author retacn yue* @Email zhenhuayue@sina.com*/public interface Command {public abstract void execute();}/*** 执行方式一* @time 下午09:38:22* @author retacn yue* @Email zhenhu
阅读全文
摘要:flyweight享元设计模式避免拥有相同内容的小类的开销,共享一个元类示例代码如下:/*** 抽象数据类型** @time 下午09:25:37* @author retacn yue* @Email zhenhuayue@sina.com*/public interface ExtrinsicState {}/*** flyweight接口** @time 下午09:24:12* @author retacn yue* @Email zhenhuayue@sina.com*/public interface FlyWeight {public void operation(Extrinsi
阅读全文
摘要:bridge桥模式将抽象和行为划分开来,各自独立但能动态结合抽象的接口/*** 咖啡抽象类** @time 下午09:14:27* @author retacn yue* @Email zhenhuayue@sina.com*/public abstract class Coffee { //CoffeeImp coffeeImp; //有木有点DI的感觉,有木有public void setCoffeeImp() {this.coffeeImp = CoffeeImpSingleton.getTheCoffeeImp();} public CoffeeImp getCoff...
阅读全文
摘要:decorator装饰模式动态的给一个对象添加一些额外的职责示例代码:/*** 工作接口** @time 下午11:25:59* @author retacn yue* @Email zhenhuayue@sina.com*/public interface Work {public void insert();}/*** 插入方形桩* @time 下午11:29:08* @author retacn yue* @Email zhenhuayue@sina.com*/public class SquarePeg implements Work {@Overridepublic void ins
阅读全文
摘要:composite组合模式将对象以树形式组织起来和chain of responsibility模式类似好处:可以一致使用组合结构和单个对象不必关心组合体内是否加入新部件示例代码:/*** 组合体接口** @time 下午09:05:03* @author retacn yue* @Email zhenhuayue@sina.com*/public abstract class Equipment {@SuppressWarnings("unused")private String name;// 实际价格public abstract double netPrice();
阅读全文
摘要:facade外观设计模式为子系统中的一组接口提供一个统一的出口
阅读全文
摘要:proxy代理模式 为其他对象提供一种代理以控制对这个对象的访问应用场景: 授权机制 (论坛中控制用户访问的权限) 不能直接操作的对象 代理中的三个角色:示例代码如下: 抽象角色: /*** 抽象类** @time 下午09:51:09* @author retacn yue* @Email zhenhuayue@sina.com*/public abstract class Subject {public abstract String request();} 代理角色:/*** 代理对象** @time 下午09:54:09* @author retacn yue* @Email zhe.
阅读全文
摘要:adapter适配器模式将两个不兼容的类纠合在一起,属于结构型模式,需要有adaptee(被适配者)和adapter(适配器)类再生的两种方式;组合composition和继承(inheritance)示例代码:/*** 圆形桩接口** @time 下午11:02:08* @author retacn yue* @Email zhenhuayue@sina.com*/public interface IRoundPeg {public void insertIntohole(String msg);}/*** 圆形桩** @time 下午10:53:09* @author retacn yue
阅读全文
摘要:prototype原型模式用原型实例指定创建对象种类,并通过拷贝这些原型对象创建新的对象示例代码如下:/*** 勺子的抽象类** Object.clone()** 方法可以合法地对该类实例进行按字段复制** @time 下午09:47:05* @author retacn yue* @Email zhenhuayue@sina.com*/public abstract class AbstractSpoon implements Cloneable {String spoonName;protected Object clone() throws CloneNotSupportedExcept
阅读全文
摘要:设计模式 builder将一个复杂的对象构建与他的表示分离,使同样的构建过程可以创建不同的表示把创建和部件的创建分别开来示例代码:/*** 部件实体** @time 下午11:03:52* @author retacn yue* @Email zhenhuayue@sina.com*/public interface Part {}/*** 成品** @time 下午11:05:14* @author retacn yue* @Email zhenhuayue@sina.com*/public class Product {public String name = "xxxx&quo
阅读全文
摘要:工厂模式:factory工厂模式就相当于创建实例对象的new,用于制造孩子的机器创建对象的一般方法: Sample s=new Sample();示例代码:/*** 2设计模式之工厂模式(factory)** @time 下午05:10:37* @author retacn yue* @Email zhenhuayue@sina.com*/public class Factory {//public static Sample creator(int witch) {if (1 == witch) {return new SampleA();} else if (2 == witch) {re
阅读全文
摘要:保证在java程序中,一个class类只有一个实例存在节省内存,有利于垃圾回收第一种形式:示例代码public class Singleton{//私有的构造器private Singleton(){}private static Singleton instance=new Singleton();//提供外部访问的方法:public static Singleton getInstance(){return instance;}}第二种形式:示例代码public class Singleton{private static Singleton instance=null;public st
阅读全文
浙公网安备 33010602011771号