zoukankan      html  css  js  c++  java
  • 设计模式

    package com.Proxy;
    
    /**
     * 静态代理: 抽象角色(公共接口)
     * 
     * @author DW
     *
     */
    public interface Order
    {
    	// 所有实现Order接口的类来重写PlaceOrder方法
    	public void PlaceOrder();
    }
    

      


    package com.Proxy;
    
    /**
     * 静态代理: 真实角色(用户)
     * 
     * @author DW
     *
     */
    public class User implements Order
    {
    	@Override
    	public void PlaceOrder()
    	{
    		System.out.println("用户下订单");
    	}
    }
    

      


    package com.Proxy;
    
    /**
     * 静态代理: 代理角色(代理)
     * 
     * @author DW
     *
     */
    public class Agents implements Order
    {
    	private User user;
    	
    	@Override
    	public void PlaceOrder()
    	{
    		// 可以在此处添加代理操作
    		
    		if (null == user)
    		{
    			this.user = new User();
    		}
    		
    		// 调用用户(真实角色)PlaceOrder方法
    		this.user.PlaceOrder();
    		
    		// 可以在此处添加代理操作
    	}
    }
    

      


    package com.Proxy;
    
    /**
     * 静态代理: 测试
     * 
     * @author DW
     *
     */
    public class ProxyTest
    {
    	public static void main(String[] args)
    	{
    		/**
    		 * 利用多态特性, order指向代理的引用, 当调用PlaceOrder方法时, 
    		 * 实际是调用的Agents类的PalceOrder方法, 该方法内部实际生成了
    		 * 一个真实角色的引用, 并调用该真实角色类的PlaceOrder方法,所以
    		 * 最终打印:"用户下订单"
    		 */
    		Order order = new Agents();
    		order.PlaceOrder(); // 用户下订单
    	}
    }
    

      

  • 相关阅读:
    关于全景漫游
    webgl圈中物体
    css3の极限
    reactjs弹幕视频播放
    数值积分I
    显出你的h5逼格
    奇葩のbeforeunload
    面试问题搜集及解析
    TCP拥塞控制(滑动窗口机制)
    如何使CPU占用率为50%
  • 原文地址:https://www.cnblogs.com/DuanLaoYe/p/7523048.html
Copyright © 2011-2022 走看看