zoukankan      html  css  js  c++  java
  • 设计模式之--代理模式(普通代理模式)

    定义:provide a surrogate or palceholder for anthoer object to control access to it
       提供一个代理或者另一个对象的占位符来控制对原本对象的访问

    类图:
          

    分类:代理模式分为 普通代理、强制代理(访问该对象必须通过他的代理类)、动态代理

    一:接口

    package dmode.proxy;
    
    /** 
     * 类描述:  接口
     * @version 1.0  CreateDate: 2015-2-13
     *
     * @updateDate			
     * @updatePerson		
     * @declare 
     */
    public interface Subject {
    	
    	/**
    	 * 方法描述:打卡
    	 */
    	public void punchCard(String name,String company);
    	
    	/**
    	 * 方法描述:上班
    	 */
    	public void beOnDuty();
    	
    	/**
    	 * 方法描述:下班
    	 */
    	public void offDuty();
    }
      
    


    二: 实现类

    package dmode.proxy;
    
    /** 
     * 类描述:  员工
     * @version 1.0  CreateDate: 2015-2-13
     *
     * @updateDate			
     * @updatePerson		
     * @declare 
     */
    public class Employer implements Subject{
    
    	/**
    	*@see dmode.proxy.Subject#punchCard()
    	*/
    	@Override
    	public void punchCard(String name,String company) {
    		System.out.println(name + "上班打卡.......公司:" + company);
    	}
    
    	/**
    	*@see dmode.proxy.Subject#beOnDuty()
    	*/
    	@Override
    	public void beOnDuty() {
    		System.out.println("开始工作.......");
    	}
    
    	/**
    	*@see dmode.proxy.Subject#offDuty()
    	*/
    	@Override
    	public void offDuty() {
    		System.out.println("下班打卡.......");
    	}
    
    }
    

      

    三 代理类

    package dmode.proxy;
    
    /** 
     * 类描述:  代理类
     * @version 1.0  CreateDate: 2015-2-13
     *
     * @updateDate			
     * @updatePerson		
     * @declare 
     */
    public class StaProxy implements Subject{
    	
    	private Subject subImpler;
    	
    	public  void setProxyEmployer(Subject sub){
    		this.subImpler = sub;
    	}
    	
    	/**
    	 * 方法描述:预处理方法 aop 就是在方法前后做了这样的拦截预处理
    	 *
    	 */
    	public void before(){
    		System.out.println("预处理方法前.....");
    	}
    	
    	public void after(){
    		System.out.println("预处理方法后.....");
    	}
    
    	/**
    	 * 模拟环绕切割 
    	 *@see dmode.proxy.Subject#punchCard()
    	 */
    	@Override
    	public void punchCard(String name,String company) {
    		before();
    		subImpler.punchCard(name,company);
    		after();
    	}
    
    	/**
    	*@see dmode.proxy.Subject#beOnDuty()
    	*/
    	@Override
    	public void beOnDuty() {
    		subImpler.beOnDuty();
    	}
    
    	/**
    	*@see dmode.proxy.Subject#offDuty()
    	*/
    	@Override
    	public void offDuty() {
    		subImpler.offDuty();
    	}
    
    }
    

      

  • 相关阅读:
    第八次课程作业
    第七次课程作业
    第六次课程作业
    第五次课程作业
    第三次课程作业
    第二次课程作业
    第一次课程作业
    FZU.Software Engineering1816 · First Homework -Preparation
    个人简介
    福大软工1816 · 第二次作业
  • 原文地址:https://www.cnblogs.com/leonkobe/p/4292485.html
Copyright © 2011-2022 走看看