JAVA装饰者模式

JAVA装饰者模式(在写数据库连接池中所遇到的,通过内存图加以理解。)

首先,关于装饰者模式(对其有基本了解的可以跳过)

装饰者模式是摒弃了继承所带来的高耦合的不利因素而同时又能对方法进行‘重写’以达到使用者目的的一种思想。刚开始我也是被绕进去了,甚至觉得它像是不改变参数列表的重载,后来自己画了内存图才理顺。
写装饰类必须要用到的几个步骤:
1.装饰者和被装饰者实现同一个接口或者继承同一个类
2.装饰者中要有被装饰者的引用
3.对需要增强的方法进行加强
4.对不需要加强的方法调用原来方法

所用到的代码(一个接口三个类)

这几段代码所要表达的意思就是将大众汽车的方法run加强,到达到跑车的层次。

一个以Car命名的接口

public interface Car {
	void run();
	void stop();
}
一个以Dazhong命名的汽车类并实现了接口

public class DZ implements Car {

	@Override
	public void run() {
		System.out.println("大众在跑");
	}

	@Override
	public void stop() {
		System.out.println("刹车");
	}

}

一个以Paoche命名的汽车类并实现了接口

public class PaoChe implements Car {

	private Car car;
	public PaoChe(Car car){
		this.car=car;
	}
	@Override
	public void run() {
		System.out.println("加上引擎");
		System.out.println("我终于可以10秒破千了..");
	}

	@Override
	public void stop() {
		car.stop();
	}
}

main方法
public class GO {
	public static void main(String[] args) {
		DZ dazhong = new DZ();
		/*dazhong.run();
		dazhong.stop();*/
		
		PaoChe pc = new PaoChe(dazhong);
		pc.run();
		pc.stop();
	}
}

输出结果:那肯定是:加上引擎可以10秒破千。刹车。
代码中不好理解的地方在于:在跑车类中对大众类的引用,这里使用跑车的含参构造方法,将dazhong当对象传了进去。这里运用了多态的思想。一直是父接口指向子实现类DZ,我现在理解了让我再回想当时卡壳的地方我就觉得很傻,那我直接上内存图吧。

内存图理解加以解释

在这里插入图片描述
有点乱将就着看,后面再写一篇关于连接池的装饰者模式。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值