03 设计模式之--修饰设计模式

8 篇文章 0 订阅
6 篇文章 0 订阅
当想要对已有的对象进行功能增强时,
可以定义类,将已有对象传入,基于已有的功能,并提供加强功能.
那么自定义的该类称为装饰类.

装饰类通常会通过构造方法接收被装饰的对象.
并基于被装饰的对象的功能,提供更强的功能.


继承实现的增强类和修饰模式实现的增强类有何区别?
继承实现的增强类:
	优点:代码结构清晰,而且实现简单
	缺点:对于每一个的需要增强的类都要创建具体的子类来帮助其增强,这样会导致继承体系过于庞大
		class Fu{
			public void eat(){
				System.out.println("吃饱");
			}
		}
		class Zi extends Fu{
			public void eat(){
			   System.out.println("吃小菜");
			   super.eat();
			   System.out.println("吃点水果");
			}
		}

修饰模式实现的增强类:
	优点:内部可以通过多态技术对多个需要增强的类进行增强
	缺点:需要内部通过多态技术维护需要增强的类的实例。进而使得代码稍微复杂
例:---虽然不是很实际但例很清晰---------修饰设计模式---------
class Person	//需要增强的类
{
	public void chifan()	//需要增强的吃饭方法
	{
		System.out.println("吃饭");
	}
}

class SuperPerson//1.自定义一个增强Person方法的类
{
	private Person p ;
	SuperPerson(Person p )//2.带参构造函数传进需要增强的类
	{
		this.p = p;
	}
	public void superChifan()//3.增强吃饭的方法
	{
		System.out.println("开胃酒");//增强的功能
		p.chifan();			//4.调用吃饭的方法
		System.out.println("甜点");//增强的功能
		System.out.println("水果");//增强的功能
	}
}

class PersonDemo
{
	public static void main(String[] args)
	{
		Person p  = new Person();//5.需要增强的类
		SuperPerson sp = new SuperPerson(p);//6.增强类
		sp.superChifan();//7.调用增强类的吃饭方法.
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值