6.03装饰者模式

接口

package org.westos.装饰者模式;

public interface Phone {
	//手机抽象功能
	public abstract void call();
}

实现接口的具体类

package org.westos.装饰者模式;

public class Iphone implements Phone{

	@Override
	public void call() {
		System.out.println("手机可以打电话");
	}

}

实现接口的抽象类,关键

package org.westos.装饰者模式;
//抽象类,手机的装饰类
public abstract class PhoneDecoreate implements Phone {
	private Phone p;

	public PhoneDecoreate(Phone p) {
		this.p = p;
	}

	@Override
	public void call() {
		this.p.call();
	}

}

继承抽象类的具体类

package org.westos.装饰者模式;

public class Iphone2 extends PhoneDecoreate {

	public Iphone2(Phone P) {
		super(P);
	}
	//实现听音乐功能
	@Override
	public void call() {
		super.call();
		System.out.println("手机听音乐");
	}
}
package org.westos.装饰者模式;

public class Iphone3 extends PhoneDecoreate{

	public Iphone3(Phone p) {
		super(p);
		// TODO Auto-generated constructor stub
	}
	@Override
	public void call() {
		System.out.println("彩铃响了");
		super.call();
	}
}

测试类

package org.westos.装饰者模式;

public class Demo {
	public static void main(String[] args) {
		Phone p = new Iphone();
		Iphone2 p2 = new Iphone2(p);
		p2.call();
		System.out.println("------------------");
		Iphone3 p3 = new Iphone3(p);
		p3.call();
		System.out.println("------------------");
		//新需求,先彩铃,打电话,听音乐
		//封装
		Iphone2 p4 = new Iphone2(new Iphone3(p));
		p4.call();
		System.out.println("----------------------");
		Iphone3 p5 = new Iphone3(new Iphone2(p));
		p5.call();
	}
}


猜你喜欢

转载自blog.csdn.net/ws1995_java/article/details/80614311
今日推荐