固然我们膳绫擎真正要履行的营业只有executeTransaction(),然则日记,机能,权限相干的代码差不多要将真正的营业代码掩盖了。并且今后如不雅我们还有一个Example2,它同样须要实现雷同的日记,机能,权限代码。如许当今后我们须要新增相干的逻辑检查的时刻,我们须要所有Example进行重构,这显然不相符面向对象的一个基来源基本则-封装变更。
我们要实现的营业是,统计员工工资的时刻法度榜样所履行的时光以及检查取户的权限。起首我们先来实现Salary类,它琅绫擎包含一些实现统计员工工资的营业逻辑:
- public interface SalaryInterface {
- public void doSalary();
- }
- public class Salary implements SalaryInterface {
- public void doSalary() {
- ...
- }
- }
经由过程InvocationHandler我们来实现动态代劳,今后当我们调用obj的相干办法之前,都邑经由过程invoke办法进行代劳,而不会直接调用obj办法。
- public class SimpleProxy implements InvocationHandler {
- private Object obj;
- private Object advice;
- // 绑定代劳对象
- public Object bind(Object obj, Advice advice) {
- this.obj = obj;
- this.advice = advice;
- return Proxy.newProxyInstance(obj.getClass().getClassLoader(),
- obj.getClass().getInterfaces(), this)
- }
- // 实现代劳
- public Object invoke(Object proxy, Method method, Object[] args) throws Throwalbe {
- Object result = null;
- try {
- advice.before();
- result = method.invoke(obj, args);
- advice.after();
- } catch(Exception e) {
- e.printStackTrace();
- }
推荐阅读
常见用法: netstat –npl 可以查看你要打开的端口是否已经打开。 netstat –rn 打印路由表信息。 netstat –in 供给体系上的接口信息,打印每个接口的MTU,输入分>>>详细阅读
本文标题:Java反射机制应用实践
地址:http://www.17bianji.com/lsqh/35285.html
1/2 1