链接模式1

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

 1 package designPattern;
 2 /**
 3  * 链接模式1
 4  * @author Administrator
 5  */
 6 public class A8_ChainTest1 {
 7 
 8     /**
 9      *    使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,
10      *     并沿着这条链传递该请求,直到有一个对象处理它为止。    
11      *    这一模式的想法是,给多个对象处理一个请求的机会,从而解耦发送者和接受者.
12      *    适用性:
13      *     1.有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
14      *  2.你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
15      *    3.可处理一个请求的对象集合应被动态指定。        
16      */
17     public static void main(String[] args) {
18         Request1 r1=new AddWageRequest();
19         Request1 r2=new QuitJobRequest();
20         Request1 r3=new ChangeworkRequest();
21         
22         Handle qHandle=new QuitJobHandle();
23         Handle aHandle=new AddWageHandle(qHandle);
24         Handle cHandle=new ChangeworkHandle(aHandle);
25         qHandle.handleRequest(r1);
26         aHandle.handleRequest(r1);
27         cHandle.handleRequest(r3);
28         cHandle.handleRequest(r2); 
30     }
31 }
32 interface Request1{}
33 class AddWageRequest implements Request1{}
34 class QuitJobRequest implements Request1{}
35 class ChangeworkRequest implements Request1{}
36 interface Handle{ 
37     void handleRequest(Request1 r);
38 }
39 
40 class AddWageHandle implements Handle
41 { 
42     Handle h;    
43     public AddWageHandle(Handle h) {
44         super();
45         this.h=h;
46     }
47     public void handleRequest(Request1 r) {        
48         if (r instanceof AddWageRequest) {
49             System.out.println("加薪申请,审批中......");
50         }
51         h.handleRequest(r);    
52     }    
53 }
54 class QuitJobHandle implements Handle
55 {    
56     public void handleRequest(Request1 r) {
57         if (r instanceof QuitJobRequest) {
58             System.out.println("离职......");
59         }        
60     }
61 }
62 class ChangeworkHandle implements Handle
63 {
64     Handle h;
65     public ChangeworkHandle(Handle h) {
66         super();
67         this.h=h;
68     }
69     public void handleRequest(Request1 r) {
70         if (r instanceof ChangeworkRequest) {
71             System.out.println("更换工作申请中....");
72         }
73         h.handleRequest(r);
74     }    
75 }

 

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

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

欢迎亲们评论指教。

posted @ 2015-04-10 09:54  xiluhua  阅读(166)  评论(0编辑  收藏  举报