责任链模式

责任链模式定义如下:
Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request.Chain the receiving objects and pass the request along the chain until an objecthandles it.(使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。)

古代女子的三从四德, 想要做些 什么都得请示一下经过允许之后才可,在家从父,出嫁从夫,老后从子,如下是请示的流程;这正是一个典型的责任链模式。以下图2是顺序处理的类图

从类图上看,三个实现类Father、Husband、Son只要实现构造函数和父类中的抽象方法response就可以了,具体由谁处理女性提出的请求,都已经转移到了Handler抽象类中,代码如下;

package design_mode;

public interface IWoman {
    public abstract int getType();
    public abstract String getRequest();
}


package design_mode;

public class Woman implements IWoman{
    private int m_type = 0;
    private String m_request="";
    public Woman(int type, String str){
        this.m_request = str;
        switch(type){
        case 1:
            this.m_type = 1;
            this.m_request = "daddy, "+ this.m_request;
            break;
        case 2:
            this.m_type = 2;
            this.m_request = "darling, "+ this.m_request;
            break;
        case 3:
            this.m_type = 3;
            this.m_request = "my son, "+ this.m_request;
            break;
        default:
        
        }
    }
    @Override
    public int getType() {
        return this.m_type;
    }

    @Override
    public String getRequest() {
        return this.m_request;
    }

}


package design_mode;

public interface Ihandler {
    public abstract void HandleRequest(IWoman request);
}

package design_mode;

public abstract class Handler implements Ihandler{
    public static final int FATHER_DO=1;
    public static final int HUNSBAND_DO=2;
    public static final int SON_DO=3;
    
    private int m_type;
    private Handler m_nextHandler;
    
    public void setNextHandler(Handler handler){
        this.m_nextHandler = handler;
    }
    //每个子类都要说明一下自己所处理的类型,显示构造
    public Handler(int type){
        this.m_type = type;
    }
    
    @Override
    public void HandleRequest(IWoman request) {
        // TODO 自动生成的方法存根
        if(request.getType() == this.m_type){
            this.response(request);
            
        }else {
            if(this.m_nextHandler != null){
                this.m_nextHandler.HandleRequest(request);
            }else{
                System.out.println("req: "+request.getRequest());
                System.out.println("---not ok---\n");
            }
            
        }
    }
    //子类实现抽象接口
    protected abstract void response(IWoman woman );

}

package design_mode;

public class Father extends Handler{
    public Father() {
        super(Handler.FATHER_DO);
    }

    @Override
    protected void response(IWoman woman) {
        String res = "Ok, you can do it!";
        System.out.println("........女儿向父亲请示.......");
        System.out.println("req: "+woman.getRequest());
        System.out.println("res: "+res);
        //return res;
    }

}

package design_mode;

public class Husband  extends Handler{

    public Husband() {
        super(Handler.HUNSBAND_DO);
    }

    @Override
    protected void response(IWoman woman) {
        String res = "Ok, i'll go with you !";
        System.out.println("........妻子向丈夫请示.......");
        System.out.println("req: "+woman.getRequest());
        System.out.println("res: "+res);
    }

}


package design_mode;

public class Son  extends Handler{

    public Son() {
        super(Handler.SON_DO);
    }

    @Override
    protected void response(IWoman woman) {
        System.out.println("........母亲向儿子请示.......");
        String res = "Ok, please come back soon !";
        System.out.println("req: "+woman.getRequest());
        System.out.println("res: "+res);
    }

}

package design_mode;
import design_mode.Father;
import design_mode.Handler;

public class Chain_respon {
    public static void main(String [] args){
    Handler fobj = new Father();
    Handler hobj = new Husband();
    Handler sobj = new Son();
    
    fobj.setNextHandler(hobj);
    hobj.setNextHandler(sobj);
    String str="I'd like to go shopping ";
    Woman woman1 = new Woman(2,str);
    fobj.HandleRequest(woman1);
 }
}


内容概要:本文详细探讨了基于MATLAB/SIMULINK的多载波无线通信系统仿真及性能分析,重点研究了以OFDM为代表的多载波技术。文章首先介绍了OFDM的基本原理和系统组成,随后通过仿真平台分析了不同调制方式的抗干扰性能、信道估计算法对系统性能的影响以及同步技术的实现与分析。文中提供了详细的MATLAB代码实现,涵盖OFDM系统的基本仿真、信道估计算法比较、同步算法实现和不同调制方式的性能比较。此外,还讨论了信道特征、OFDM关键技术、信道估计、同步技术和系统级仿真架构,并提出了未来的改进方向,如深度学习增强、混合波形设计和硬件加速方案。; 适合人群:具备无线通信基础知识,尤其是对OFDM技术有一定了解的研究人员和技术人员;从事无线通信系统设计与开发的工程师;高校通信工程专业的高年级本科生和研究生。; 使用场景及目标:①理解OFDM系统的工作原理及其在多径信道环境下的性能表现;②掌握MATLAB/SIMULINK在无线通信系统仿真中的应用;③评估不同调制方式、信道估计算法和同步算法的优劣;④为实际OFDM系统的设计和优化提供理论依据和技术支持。; 其他说明:本文不仅提供了详细的理论分析,还附带了大量的MATLAB代码示例,便于读者动手实践。建议读者在学习过程中结合代码进行调试和实验,以加深对OFDM技术的理解。此外,文中还涉及了一些最新的研究方向和技术趋势,如AI增强和毫米波通信,为读者提供了更广阔的视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值