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

    代理模式使用了多态,主要是便于扩展,代理类和被代理类使用的是同一个接口。

    代码演示,先创建一个接口Women。

    Women.java

    package proxy;
    
    public interface Women {
    	public void eat();
    	public void paly();
    
    }
    

    创建两个要被代理的类,实现Women接口。

    Juli.java

    package proxy;
    
    public class Juli implements Women{
    
    	@Override
    	public void eat() {
    		System.out.println("i'm Juli,i love eat banana");
    	}
    
    	@Override
    	public void paly() {
    		System.out.println("i'm Juli,i love swimming");
    	}
    
    }
    

    Lily.java

    package proxy;
    
    public class Lily implements Women{
    
    	@Override
    	public void eat() {
    		System.out.println("i'm Lily,i love eat apple");
    		
    	}
    
    	@Override
    	public void paly() {
    		System.out.println("i'm Lily, i love play football");
    	}
    
    }
    

    创建一个代理类Proxy:

    proxy.java

    package proxy;
    
    public class Proxy implements Women {
    	private Women women;
    	public Proxy() {
    		this.women = new Lily();//默认是Lily
    	}
    	public Proxy(Women women){
    		this.women=women;
    	}
    	@Override
    	public void eat() {
    		this.women.eat();
    	}
    
    	@Override
    	public void paly() {
    		this.women.paly();
    	}
    
    }
    

    Test:

    package proxy;
    
    public class Test {
    	public static void main(String[] args) {
    		Proxy p;
    		p=new Proxy();
    		p.eat();
    		p.paly();
    		Juli j=new Juli();
    		p=new Proxy(j);
    		j.eat();
    		j.paly();
    	}
    
    }
    

    测试结果:

    i'm Lily,i love eat apple
    i'm Lily, i love play football
    i'm Juli,i love eat banana
    i'm Juli,i love swimming
    

    主要好处在于,以后要添加新的被代理类不需要改动原来的代理类代码,只需要实现接口就行,解耦合。

  • 相关阅读:
    吴太银:华为消费者云服务Cassandra使用场景与最佳实践
    使用FileZilla连接Linux
    debug 与 release
    删除cocos2dx项目模版
    [转]C/C++控制台输出时设置字体及背景颜色
    iphone调试的一些问题
    [转]Refactoring Game Entities with Components
    使用QT + cocos2dx制作工具
    [转]printf输出字体颜色
    Error: No module named books
  • 原文地址:https://www.cnblogs.com/JAYIT/p/5007217.html
Copyright © 2011-2022 走看看