設計思想:就是多個類去完成一項的工做,其中一個類去分發任務,其餘類作具體的任務,而具體表現是這個委派類的工做,具體過程是被委派類來操做的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