zoukankan      html  css  js  c++  java
  • 链接模式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

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

    欢迎亲们评论指教。

  • 相关阅读:
    vsftp关于"550 create directory operation failed"问题解决
    CentOS 5.5 Samba服务器安装总结
    Centos 5.5下安装samba
    iptables里filter表前面几个数字的意思
    Linux误删C基本运行库libc.so.6急救方法
    Linux升级C基本运行库CLIBC
    MySQL的Grant命令
    Apache Options指令详解
    Apache的Order Allow,Deny 详解
    Python 中 open()文件操作的方式
  • 原文地址:https://www.cnblogs.com/xiluhua/p/4413727.html
Copyright © 2011-2022 走看看