您的位置:首页 > 其它

设计模式 - Decorator模式

2016-05-20 21:49 127 查看
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 总结

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式