美文网首页
java的委托代理模式(一)---接口模式

java的委托代理模式(一)---接口模式

作者: 蘑菇Ai布丁 | 来源:发表于2018-11-01 15:21 被阅读0次

今天,我们来模拟一个应用场景

控制层类:CollectInfoCenter 

组件类:HrPanel

HrPanel是一个公共组件类,我们现在需要里面有一个位置需要运行CollectInfoCenter 里的一个方法。除非把CollectInfoCenter 这个方法赋值给HrPanel里面的一个空的方法体,可是在java里面是没有这个模式的!那怎么办呢?这里我用一个接口作为中间过渡,来实现这个委托代理。

中间接口类:IPanelBeforeEditorCreate

public interface IPanelBeforeEditorCreate {

public void  _panel_BeforeEditorCreate()throws Exception;

}

在HrPanel中把这个接口当做属性,并且调用这个接口中方法,我们这里假设一次会有多个接口实例

public class HrPanel {

public List<IPanelBeforeEditorCreate> panelBeforeEditorCreates = new ArrayList<>();

//***

// --------------------

// 调用自定义事件的,接口实现过程开始

// *****/

public void add(IPanelBeforeEditorCreate iPanelBeforeEditorCreate){

this.panelBeforeEditorCreates.add(iPanelBeforeEditorCreate);

}

public void remove(IPanelBeforeEditorCreate iPanelBeforeEditorCreate) {

this.panelBeforeEditorCreates.remove(iPanelBeforeEditorCreate);

}

public void notifyListeners()throws Exception{

Iterator iter =this.panelBeforeEditorCreates.iterator();

while (iter.hasNext()) {

IPanelBeforeEditorCreate listener = (IPanelBeforeEditorCreate) iter.next();

listener._panel_BeforeEditorCreate();

}

}

//***

// 调用自定义事件的,反射机制实现过程结束

// --------------------

// *****/

}

// 在这里需要调用外部controller的方法

public  void dothis() {

this.notifyListeners();

}

这样组件内部的就写完了,我们开始controller里面的调用,收先我们需要实现这个接口,并且实现接口中的方法,在需要调用的地方我们需要写上

public class CollectInfoCenter    implements   IPanelBeforeEditorCreate{

    public Object GetCollectInfo()

    {

    HrPanel     _panel   =   new   HrPanel();

    _panel.add(this);

    return _panel.dothis();

    }

    @Override

    public void _panel_BeforeEditorCreate(){

    System.out.println("--------------------------------");

    System.out.println("调用了 CollectInfoCenter 自定义panel事件");

    System.out.println("--------------------------------");

    }

}

这样,在hrpanel里面调用dothis的时候,你会发现控制台上输出了

--------------------------------

调用了 CollectInfoCenter 自定义panel事件

--------------------------------

OK,这里我们就实现了像C#中一样的委托事件模式,所有的类只需要实现了我们定义的中间接口,就可以在dothis里面执行自定义的东西,是不是很nice!!!

当然了,如果你觉得写接口比较麻烦的话!那下一章节我们就来看看另外一种比较简单的处理模式(反射机制)

相关文章

  • Java设计模式:代理模式

    Java设计模式——代理模式 代理模式主要分为接口,委托类,代理类 接口:规定具体方法委托类:实现接口,完成具体的...

  • Java动态代理

    Java动态代理介绍 代理模式是常用的java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托...

  • Java 动态代理(JDK 和 cglib)[转]

    原文 代理模式 代理模式是常用的 Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类...

  • 代理模式

    一、什么是代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类...

  • Spring框架学习的第三天

    代理模式 代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消...

  • JAVA反射篇之动态代理

    代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息...

  • Java动态代理学习

    一.代理模式 代理模式是一种常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预...

  • java 动态代理封装使用

    1、java 动态代理原理 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责...

  • Java语言中代理模式简介(一)

    1 代理的作用 代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处...

  • java代理 看这一篇就够了,万字详解!

    什么是代理 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消...

网友评论

      本文标题:java的委托代理模式(一)---接口模式

      本文链接:https://www.haomeiwen.com/subject/omrxxqtx.html