设计模式之静态代理模式
举个栗子:
比如你结婚,婚庆公司帮你代理一些事情(布置婚房,准备午餐等),虽然婚前公司做的,但是是为你而做的
静态代理的设计模式的三要素:
1.真实角色
2.代理角色:代理角色需要具有真实角色的引用,这样才能实现对真实角色的代理
3.真实角色和代理角色要实现共同的接口
看个样例:
Staticproxy.java
package 设计模式; /** * @author:yb * @version 创建时间:2018-12-24 下午4:48:03 类说明 */ /* * 静态代理 设计模式 * 1.真实角色 * 2.代理角色:必须持有真实角色的引用,这样才能代理真实角色 * 3.二者实现了相同的接口 */ public class StaticProxy { public static void main(String[] args) { // 应用该代理 // 1.创建真实角色 You you = new You(); // 2.创建代理角色+引用真实角色的代理:you WeddingCompany weddingCompany = new WeddingCompany(you); // 3.执行任务 weddingCompany.marry(); /* * 虽然是执行的weddingCompany的marry() 但是仍是对you这个对象的的操作 */ } } // 共同的接口 interface Marry { void marry();// 公共的抽象方法 } // 真实角色 class You implements Marry { public void marry() { System.out.println("you marry whith xxx!"); } } // 代理角色 class WeddingCompany implements Marry { private Marry you; // 有参构造,因为代理要有真实角色的引用才能实现代理 public WeddingCompany(Marry you) { this.you = you; } private void before() { System.out.println("Decorate the wedding room"); } private void after() { System.out.println("Arranging lunch"); } public void marry() { you.marry(); before(); after(); } }
心之所向,素履以往