装饰者模式

Posted volcanocan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰者模式相关的知识,希望对你有一定的参考价值。

总结一下今天的学习内容:

装饰着者模式的使用步骤:
  1.装饰者和被装饰者实现同一个接口或者继承同一个类
  2.装饰者中要有被装饰者的引用
  3.对需要增强的方法进行加强
  4.对不需要加强的方法调用原来方法

 

通过以下代码为例:

首先,定义一个Car接口:

public interface Car {
	void run();
	void stop();
}

  

这是一个实现Car的接口,重写了Car的run和stop方法:

public class QQ implements Car {

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

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

}

写一个主函数:

public class TTT {

	public static void main(String[] args) {
		QQ qq = new QQ();
		qq.run();
		qq.stop();

	}

}

  

 

 

运行可得:

qq在跑
刹得住车

接着,装饰者实现Car这个接口。装饰者中要有被装饰者的引用,将car传入CarWrap构造方法中。对于需要增强的方法run(),我们可以重写该方法。对于不需要增强的方法,则调用原来的方法即可。

public class CarWarp implements Car {

	private Car car;

	public CarWarp(Car car){
		this.car=car;
	}
	@Override
	public void run() {
		System.out.println("加上电池");
		System.out.println("我终于可以5秒破百了..");
	}

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

}

写一个测试函数:

public class TTT {

	public static void main(String[] args) {
		CarWarp warp = new CarWarp(qq);
		warp.run();
		warp.stop();
	}

}

  

运行可得:

加上电池
我终于可以5秒破百了..
刹得住车






以上是关于装饰者模式的主要内容,如果未能解决你的问题,请参考以下文章

Java设计模式之装饰者模式

设计模式整理_装饰者模式

设计模式-装饰者模式(Go语言描述)

设计模式-装饰者模式(Go语言描述)

装饰者模式

设计模式 之 装饰者模式