设计思想:就是多个类去完成一项的工做,其中一个类去分发任务,其余类作具体的任务,而具体表现是这个委派类的工做,具体过程是被委派类来操做的java
【ITask.java】定义工做的统一标准设计模式
package com.itcloud.pattern.delegate; //意见任务须要多人进行完成 public interface ITask { //不一样的人更具任务标准完成不一样的工做 void work(); }
【WorkerOne.java】被委托类安全
package com.itcloud.pattern.delegate; public class WorkerOne implements ITask { @Override public void work() { System.out.println("第一我的须要完成的事情"); } }
【WorkerTow.java】被委托类ide
package com.itcloud.pattern.delegate; public class WorkTow implements ITask { @Override public void work() { System.out.println("第二我的须要完成的事情"); } }
【Dispatcher.java】这个类就是负责任务的分发,将上级的任务分配到每个类中性能
package com.itcloud.pattern.delegate; //这项任务的完成,须要由一我的进行委派,领导级别的 public class Dispatcher implements ITask { private Class<? extends ITask> clazz; public Dispatcher(Class<? extends ITask> clazz){ this.clazz = clazz; } @Override public void work() { try { clazz.getDeclaredMethod("work").invoke(clazz.newInstance()); } catch (Exception e) { e.printStackTrace(); } } }
【DelegateTestDemo.java】测试类测试
package com.itcloud.pattern.delegate; public class DelegateTestDemo { public static void main(String[] args) { Dispatcher dispatcher = new Dispatcher(WorkerOne.class); dispatcher.work(); } }
不管从性能和安全的角度这个单例设计都是最优的this
package com.itcloud.pattern.SingleInst; public class SingleIns { private static class generator{ public static final SingleIns INSTANCE = new SingleIns(); } private SingleIns(){} public static final SingleIns getInstance(){ return generator.INSTANCE; } }
此时咱们也能够像JDK动态代理那样对生成的代理类进行字节码反编译。
爱生活爱分享欢迎您的关注与加入自学交流群:461265466
spa