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
    

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

  • 相关阅读:
    13 数据库主从
    12 数据备份
    11 锁机制
    12 日志
    10 索引(二)
    09 索引
    update kernel 3.10-3.12
    haproxy para config
    mysql slave to master
    storage disk
  • 原文地址:https://www.cnblogs.com/JAYIT/p/5007217.html
Copyright © 2011-2022 走看看