链接模式2

设计模式的意义在于:面向业务内容、业务数据结构和系统架构,高内聚低耦合、优雅的将平面逻辑立体化。

  1 package designPattern;
  2 /**
  3  * 链接模式2,功能全面
  4  * @author Administrator
  5  */
  6 public class A9_ChainTest2  {
  7     public static void main(String[] args) {
  8         Manager aManager = new Manager();
  9         ProjectManager1 aPM = new ProjectManager1();
 10         Programmer1 aProgrammer1 = new Programmer1();
 11         QA aQA = new QA();
 12         Others others = new Others();
 13
 14         aManager.addChain(aPM);
 15         aPM.addChain(aProgrammer1);
 16         aProgrammer1.addChain(aQA);
 17         aQA.addChain(others);
 18
 19         aManager.sendToChain("Get");
 20         aManager.sendToChain("Design");
 21         aManager.sendToChain("Coding");
 22         aManager.sendToChain("Test");
 23         aManager.sendToChain("Kill La Deng !");
 24     }
 25 }
 26 interface Chain  {
 27     public abstract void addChain(Chain c);
 28     public abstract void sendToChain(String mesg);
 29     public abstract Chain getChain();
 30 }
 31 class Manager implements Chain {
 32     private Chain nextChain = null;
 33     private String responsibility = "Get Project";;
 34
 35     public Manager() { }
 36
 37     public void addChain(Chain c) {
 38         nextChain = c;
 39     }
 40
 41     public Chain getChain() {
 42         return nextChain;
 43     }
 44
 45     public void sendToChain(String mesg) {
 46         if(mesg.equals(responsibility)) {
 47             System.out.println("A manager  -->  Get a Project");
 48         } else {
 49             if(nextChain != null) {
 50                 nextChain.sendToChain(mesg);
 51             }
 52         }
 53     }
 54 }
 55 class Others implements Chain {
 56     private Chain nextChain = null;
 57
 58     public Others() {
 59     }
 60     public void addChain(Chain c) {
 61         nextChain = c;
 62     }
 63
 64     public Chain getChain() {
 65         return nextChain;
 66     }
 67
 68     public void sendToChain(String mesg) {
 69             System.out.println("No one can handle -->  " + mesg);
 70     }
 71 }
 72 class Programmer1 implements Chain {
 73     private Chain nextChain = null;
 74     private String responsibility = "Coding";
 75
 76     public Programmer1() {
 77     }
 78     public void addChain(Chain c) {
 79         nextChain = c;
 80     }
 81
 82     public Chain getChain() {
 83         return nextChain;
 84     }
 85
 86     public void sendToChain(String mesg) {
 87         if(mesg.equals(responsibility)) {
 88             System.out.println("A Programmer1  -->  Coding");
 89         } else {
 90             if(nextChain != null) {
 91                 nextChain.sendToChain(mesg);
 92             }
 93         }
 94     }
 95 }
 96 class ProjectManager1 implements Chain {
 97     private Chain nextChain = null;
 98     private String responsibility = "Design";
 99
100     public ProjectManager1() {
101     }
102     public void addChain(Chain c) {
103         nextChain = c;
104     }
105
106     public Chain getChain() {
107         return nextChain;
108     }
109
110     public void sendToChain(String mesg) {
111         if(mesg.equals(responsibility)) {
112             System.out.println("A PM  -->  Design");
113         } else {
114             if(nextChain != null) {
115                 nextChain.sendToChain(mesg);
116             }
117         }
118     }
119 }
120 class QA implements Chain {
121     private Chain nextChain = null;
122     private String responsibility = "Test";
123
124     public QA() {
125     }
126     public void addChain(Chain c) {
127         nextChain = c;
128     }
129
130     public Chain getChain() {
131         return nextChain;
132     }
133
134     public void sendToChain(String mesg) {
135         if(mesg.equals(responsibility)) {
136             System.out.println("A QA  -->  Test");
137         } else {
138             if(nextChain != null) {
139                 nextChain.sendToChain(mesg);
140             }
141         }
142     }
143 }

环境:JDK1.6,MAVEN,tomcat,eclipse

源码地址:http://files.cnblogs.com/files/xiluhua/designPattern.rar

欢迎亲们评论指教。

时间: 2024-07-29 23:20:25

链接模式2的相关文章

[CentOS 7系列]特殊权限与链接模式

一.特殊权限 在linux系统中,有一些特殊的权限,它们适用于极少数特殊的场景.虽然适用的场景比较少,但不代表它们不重要.比如set_uid权限,这个权限的存在,才使得操作系统的用户才能自如的更改登录口令. 在linux操作系统中,特殊权限主要有以下几个: 1.set_uid 当普通用户执行带set_uid标识位的命令文件时,将临时使用所有者的权限执行该命令. [[email protected] ~]# ll /usr/bin/ls -rwxr-xr-x. 1 root root 117656

链接模式1

设计模式的意义在于:面向业务内容.业务数据结构和系统架构,高内聚低耦合.优雅的将平面逻辑立体化. 1 package designPattern; 2 /** 3 * 链接模式1 4 * @author Administrator 5 */ 6 public class A8_ChainTest1 { 7 8 /** 9 * 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链, 10 * 并沿着这条链传递该请求,直到有一个对象处理它为止. 11 * 这一

分组密码模式: CBC模式(密码分组链接模式)

CBC模式是将前一个密文分组与当前明文分组的内容混合起来进行加密的,这样就可以避免ECB模式的弱点. 在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密,如下图所示: 如果将一个分组的加密过程分离出来,我们就可以很容易地比较出ECB模式和CBC模式的区别,ECB模式只进行了加密,而CBC模式则在加密之前进行了一次XOR,如下图所示: 当加密第一个明文分组时,由于不存在“前一个密文分组”,因此需要事先准备一个长度为一个分组的比特序列来代替“前一个密文分组”,这个比特序列称

lua三底漆:lua转让c/c++库(动态链接模式)

dll按功能luaL_openlib出口,然后lua使用package.loadlib导入库函数,基本就是这么个过程,以下上代码来说明一切. #include "stdafx.h" #ifdef __cplusplus extern "C"{ #endif #include "lua.h" #include "lualib.h" #include "lauxlib.h" #ifdef __cplusplus

[设计模式] javascript 之 责任链模式

责任链模式:定义 责任链接模式又称职责链模式,是一种对象的行为模式:它是一种链式结构,每个节点都有可能两种操作,要么处理该请求停止该请求操作,要么把请求转发到下一个节点,让下一个节点来处理请求:该模式定义了一些可能的处理请求的节点对象,请求的起点跟顺序都可能不一样,处理的节点根据请求的不一样而不同:请求者不必知道数据处理完成是由谁来操作的,内部是一个黑箱的操作过程,这是它的一个核心内容: 责任链模式:角色 抽象处理者角色:定义处理方法,以配置是否具有下个节点(Handler)对象; 具体处理者角

centos 7.3 LVS的NAT模式负载均衡实操

一.LB集群原理 1.实现手段 硬件:F5负载均衡器 软件:LVS(4层,网络层),Nginx(7层,应用层) 2.负载均衡架构图 说明: LVS集群使用三层架构 第一层:负载均衡层(Load Balancer) 位于整个集群系统的最前端,由一台或多台负载调度器(Director Server,以下简称dir)组成. dir的作用类似一个路由器,它含有为完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给服务器群组层的应用服务器(Real Server) ps:客户认为服务是来自一个虚

AES五种加密模式(CBC、ECB、CTR、OCF、CFB)

分组密码有五种工作体制:1.电码本模式(Electronic Codebook Book (ECB)):2.密码分组链接模式(Cipher Block Chaining (CBC)):3.计算器模式(Counter (CTR)):4.密码反馈模式(Cipher FeedBack (CFB)):5.输出反馈模式(Output FeedBack (OFB)). 以下逐一介绍一下: 1.电码本模式(Electronic Codebook Book (ECB)     这种模式是将整个明文分成若干段相同

分组密码的工作模式

分组密码工作模式的应用背景:多次使用相同的密钥对多个分组加密,会引发许多安全问题.为了应对不同场合,因而需要开发出不同的工作模式来增强密码算法的安全性. 1.ECB(Electronic Code Book) 特别适合数据较少的情况,对于很长的信息或者具有特定结构的信息,其大量重复的信息或固定的字符开头将给密码分析者提供大量的已知明密文对.若明文不是完整的分组,ECB需要进行填充. 2.CBC(Cipher Block Chaining) 由于加密算法的每次输入和本明文组没有固定的关系,因此就算

c++ AES实现CBC,CTR模式解密函数

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.本文将介绍AES的具体流程,以及c++实现,并且实现了CBC和CTR模式的解密函数. 1.关于AES(高级加密标准):在这里一个分组为128bit(16byte),密钥也是128bit(16byte),密钥要先通过密钥扩展,具体过程如图: 然后加轮密钥(第一轮之前)