1 解决问题
在 OO 设计和开发过程,可能会经常遇到以下的情况:我们需要为一个已经定义好的类 添加新的职责(操作),通常的情况我们会给定义一个新类继承自定义好的类,这样会带来 一个问题(将在本模式的讨论中给出)。通过继承的方式解决这样的情况还带来了系统的复 杂性,因为继承的深度会变得很深。
而 Decorator 提供了一种给类增加职责的方法,不是通过继承实现的,而是通过组合。
using UnityEngine;
using System.Collections;
namespace Decorator{
public abstract class Component{
public abstract void operation();
}
public class ConcreteComponent : Component{
public override void operation(){
Debug.Log("ConcreteComponent operation...");
}
}
public class Decorator : Component{
protected Component com;
public Decorator(Component com){
this.com = com;
}
public override void operation(){}
}
public class ConcreteDecorator : Decorator{
public ConcreteDecorator(Component com):base(com){
}
public override void operation(){
com.operation();
this.AddedBehavior();
}
public void AddedBehavior(){
Debug.Log("ConcreteDecorator::AddedBehacior....");
}
}
public class DecoratorDemo : MonoBehaviour {
void Start(){
Component com = new ConcreteComponent();
Decorator dec = new ConcreteDecorator(com);
dec.operation();
}
}
}
3 总结