装饰器模式

装饰器
	使用通用接口,进行子类拓展
1.定义抽象接口,定义拓展和原本类的通用方法
2.定义具体原本类继承抽象接口,并重写抽象方法
3.定义抽象装饰器类继承抽象接口,内部设接口成员变量
并在构造器中进行初始化原本类,并定义拓展类的通用抽象方法(可以没有)
4.定义具体装饰器类继承抽象父类,重写构造器和抽象方法
5.客户端使用抽象接口,传入具体原本类,在装饰器类下调用函数

1.定义抽象接口,定义拓展和原本类的通用方法
	public interface Picture {
		public abstract void display();
	}
2.定义具体原本类继承抽象接口,并重写抽象方法
	class ScenePicture implements Picture{
		@Override
		public void display() {
			System.out.println("beautiful scenery picture");
		}
	}
	class CartoonPicture implements Picture{
		@Override
		public void display() {
			System.out.println("cute cartoon picture");
		}
	}
3.定义抽象装饰器类继承抽象接口,内部设成员变量
并在构造器中进行初始化原本类,并定义拓展类的通用抽象方法(可以没有)
	abstract class EffectedDecorate implements Picture{
		protected Picture originalPicture;
		public EffectedDecorate(Picture originalPicture) {
			this.originalPicture = originalPicture;
		}
	}
4.定义具体装饰器类继承抽象父类,重写构造器和抽象方法	
	class WhiteningDecorate extends EffectedDecorate{
		public WhiteningDecorate(Picture originalPicture) {
			super(originalPicture);
		}
		@Override
		public void display() {
			originalPicture.display();
			System.out.println("whiten it");
		}
	}
	class BlackenDecorate extends EffectedDecorate{
		public BlackenDecorate(Picture originalPicture) {
			super(originalPicture);
		}
		@Override
		public void display() {
			originalPicture.display();
			System.out.println("blacken it");
		}
	}
5.客户端使用抽象接口,传入具体原本类,在装饰器类下调用函数
	public static void main(String[] args) {
		Picture blacker = new BlackenDecorate(new CartoonPicture());
		blacker.display();
	}	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值