`
文章列表
桥接模式 1.定义        将抽象部分与它的实现部分分离,使它们都可以独立地变化。   2.示例代码        以扩展发送短消息说明桥接模式。 /** * 实现发送消息的统一接口 */ public interface MessageImplementor { /** * 发送消息 * @param message 要发送的消息内容 * @param toUser 消息发送的目的人员 */ public void send(String message,String toUser); } /** * 抽象的消息对象 ...
职责者模式 1.定义       使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 2.示例代码       以公司聚餐的餐费申请和差旅费申请为例,说明职责者模式通用框架。   /* 通用的请求对象*/ public class RequestModel { /* 表示具体的业务类型*/ private String type; /*通过构造方法把具体的业务类型传递进来*/ public RequestModel(String type){ ...
装饰者模式 1.定义       动态的给一个对象添加一些额外的职责。就增加功能来说,装饰者模式比生成子类更为灵活。 2.示例代码      以计算奖金为例,说明装饰者模式设计思路。     /** 在内存中模拟数据库,准备点测试数据,好计算奖金*/ public class TempDB { private TempDB(){ } /* 记录每个人的月度销售额,只用了人员,月份没有用*/ public static Map<String,Double> mapMonthSaleMoney = new HashMap< ...
解释器模式 1.定义      给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 2.示例代码     以解析xml为例,说明解释器模式。     /*要解析的xml示例文件*/ <?xml version="1.0" encoding="UTF-8"> <root id="rootId"> <a> <b> <c name="testC" ...
享元模式 1.定义       运用共享技术,有效的支持大量细粒度的对象。享元即是共享的对象。 2.示例代码        对于细粒度的权限对象进行管理,说明享元模式。 /*描述授权数据的享元接口*/ public interface Flyweight{ /*判断传入的安全实体和权限是否和享元对象内部状态匹配*/ public boolean match(String securityEntity,String permit); } /*封装授权数据中重复出部分的享元对象*/ public class AuthorizationFlyweight im ...
备忘录模式 1.定义        在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将改对象恢复到原先保存的状态。 2.示例代码     仿真系统,模拟流程A运行情况的示例     /*模拟运行流程A的对象的备忘录接口,是个窄接口*/ public interface FlowAMockMemento{ //空接口 } /*模拟运行流程A,只是个示意,代指某个具体的流程*/ public class FlowaMock{ //流程名称 private String flowName; //代指某个中 ...
状态模式 1.定义         允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 2.示例代码         代码演示了对投票行为的相应处理。    /*封装一个投票状态的相关行为*/ public interface VoteState{ //处理状态对应的行为 public void vote(String user,String voteItem,VoteManager voteManager); } /*正常投票状态的处理*/ public class NormalVoteState implements Vote ...
策略模式 1.定义        定义一系列的算法,把它们一个个封装起来,并且使特们可相互替换。本模式使得算法可独立与使用它的客户而变化。 2.示例代码         展示了多种工资支付方式的策略。   /*支付工资的策略接口,公司有多种支付工资的算法*/ public interface PaymentStrategy{ //支付工资的算法,传入算法所需的数据,上下文 public void pay(PaymentContext ctx); } /*人民币现金支付策略*/ public class RMBCash implements Paym ...
模板方法模式 1.定义         定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 2.示例代码         用来实现普通登陆和工作人员登陆的示例代码    /*封装进行登陆控制所需要的数据*/ public class LoginModel{ private String loginId; private String pwd; public String getLoginId(){ return loginId; } public ...
在java中的整数类型有四种,分别是 byte  short int long 其中byte只有一个字节 0或1,在此不详细讲解。 其他的三种类型如下: 1、基本类型:short 二进制位数:16包装类:java.lang.Short最小值:Short.MIN_VALUE=-32768 (-2的15此方)最大 ...
概述      分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。 有些时候我们希望能使用一种简单一些的ID,并且希 ...
组合模式 1.定义       将对象组合成树形结构,以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。   2.示例代码      商品分类树形结构,使得类别和叶子节点通过统一的组件对象访问。      /*抽象组件对象,为组合中的对象声明接口,实现接口的缺省行为*/ public abstract class Component{ //输出组件自身的名称 public abstract void printStruct(String preStr); /*向组合对象中添加组件对象*/ public void ...
迭代器模式 1.定义         提供一种方法,顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 2.示例代码          使用迭代器模式,遍历数组和链表两个聚合对象。    /*工资模型描述对象*/ public class PayModel{ //员工姓名 private String userName; //支付工资 private double pay; public String getUserName(){ return userName; } publi ...
命令模式 1.定义        将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数话,对请求排队或者记录请求日志,以及支持可撤销的操作。 2.示例代码        使用命令模式模拟开机,机箱尚的按钮相当 ...
观察者模式 1.定义        定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖与它的对象都能得到通知并被自动更新。 2.示例代码    /*目标对象,它知道观察它的观察者,提供注册和删除观察者的接口*/ public class Subject{ /*用来保存注册的观察者对象*/ private List<Observer> observers = new ArrayList<Observer>(); /*注册观察者*/ public void attach(Observer observe ...
Global site tag (gtag.js) - Google Analytics