zoukankan      html  css  js  c++  java
  • Java 代理

    代理做一个简单的抽象:

    代理模式包含如下角色:

    • Subject:抽象主题角色。可以是接口,也可以是抽象类。
    • RealSubject:真实主题角色。业务逻辑的具体执行者。
    • ProxySubject:代理主题角色。内部含有RealSubject的引用,负责对真实角色的调用,并在真实主题角色处理前后做预处理和善后工作。

    代理模式优点:

    • 职责清晰 真实角色只需关注业务逻辑的实现,非业务逻辑部分,后期通过代理类完成即可。
    • 高扩展性 不管真实角色如何变化,由于接口是固定的,代理类无需做任何改动。

    静态代理代码实例:

    代码转载自:http://www.importnew.com/26116.html
    
    interface ICoder {
    	public void implDemands(String demandName);
    }
    class JavaCoder implements ICoder {
    	private String name;
    	public JavaCoder(String name) {
    		this.name = name;
    	}
    	@Override
    	public void implDemands(String demandName) {
    		System.out.println(name + " implemented demand:" + demandName + " in JAVA!");
    	}
    }
    
    class CoderProxy implements ICoder {
    	private ICoder coder;
    	public CoderProxy(ICoder coder) {
    		this.coder = coder;//将码农coder赋值给this.coder,实现了procy对coder的管理
    	}
    	@Override
    	public void implDemands(String demandName) {
    		coder.implDemands(demandName);
    	}
    }
    public class Customer {
    	public static void main(String args[]) {
    		// 定义一个java码农
    		ICoder coder = new JavaCoder("Zhang");//发生了向上转型,只能实现JavaCoder重写的方法
    		// 定义一个产品经理
    		ICoder proxy = new CoderProxy(coder);//发生了向上转型,只能实现CoderProxy重写的方法
    		// 让产品经理实现一个需求
    		proxy.implDemands("manage");
    	}
    }
  • 相关阅读:
    误加all_load引起的程序报错
    ConstraintLayout 约束布局
    前端判断是否APP客户端打开触屏,实现跳转APP原生组件交互之遐想
    TP5 多条件whereOr查询
    json手动解析详解
    Centos python 2.6 升级到 2.7
    js中click重复执行
    使用 Python 实现实用小工具
    使用 Python 编写密码爆破工具
    使用Python进行无线网络攻击
  • 原文地址:https://www.cnblogs.com/jeasion/p/10758336.html
Copyright © 2011-2022 走看看