设计模式之装饰器模式&代理模式

設計模式

裝飾器模式&代理模式的比較
一、定義
裝飾器模式:在不改變原有對象的基礎上,動態的給原有對象增加一些職責/功能。(屬於對象結構型模式)
代理模式:提供一個代理來控制對原有對象的訪問。代理對象作為訪問對象和目標對象之間的中介。(理解為律師/中介)
二、二者区别比较
相同点:装饰器类和代理类均需要与原始对象实现同一个接口。
不同点:装饰器模式的通常做法是,将原始对象作为一个参数传递给装饰者 的构造器(意为在原有对象基础上进行装饰);增强自身
代理模式的通常做法是,直接在构造器中创建一个被代理的对象(意为全权代理);是让代理对象去做一些与本身业务不太相关的职责比如日志和设置缓存。

三、代码实现

//抽象接口
public interface Sourceable{
	void method();
}
//實現類
public class Source implements Sourceable {
	void method(){
		System.out.println("原有類的方法被訪問了");
	}
}
//裝飾器類
public class Decorator implements Sourceable{
	private Sourceable source;
	public Decorator(Sourceable source){
		this.source = source;
	}
	void method(){
		source.method();
		System.out,println("裝飾器動態增加的職責/功能");
	}
}
//代理类
public class Proxy implements Sourceable{
 // 这是区别于装饰器类的关键点。代理要全权代理原有对象,控制对象的访问
	private Source source;
	public Proxy(){
		this.source = new Source();
	}
	void method(){
		source.method();
		System.out.println("代理类的功能实现");
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值