代理模式和装饰模式的差别

       学了代理模式之后发现静态代理模式和装饰模式非常的相似,代理类和被代理的客户实现同一个接口,装饰者和被装饰者也是实现的同一个接口实现方式也类似(针对接口编程是一个主要设计原则)。搜索之,得到结论:代理模式主要是控制对某个特定对象访问,而装饰模式主要是为了给对象添加行为

所以两类的设计模式的代码还是有一些差别。下面代码来着网上,做了一些修改,原网址http://www.cnblogs.com/jaredlam/archive/2011/11/08/2241089.html

静态代理模式

通常自己构造对象,方法中控制对象的访问。

//接口
interface Subject{
	public void doAction();
}
//实现类
 class RealSubject implements Subject{
	@Override
	public void doAction() {		
	  System.out.println("do something");	
	}
	 
 }
 //代理类
 class Proxy implements Subject{
    private Subject subject;
    public Proxy(){
        //关系在编译时确定
         subject = new RealSubject();
    }
    public void doAction(){
        //控制访问
          if()
        	  subject.doAction();
          else
        	  ...
    }
}
装饰模式

  在构造函数中传入被装饰的对象。

interface Component{
  public void operate();
}
//具体构件
class ConcreteComponent implements Component{
   public void operate(){
         System.out.print("do somthing");
    }
}
//装饰者
class Decorator implements Component{ 
private Component component; 
    public Decorator(Component component){ 
//通过构造器传值 
this.component = component 
}
 public void operation(){ 
           do something        
           component.operation();
           do Something 
           
      }
}








评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值