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