//装饰者模式
//组件 抽象类
abstract class Component {
public abstract operator(): void;
}
//具体的构件
class componentObj extends Component {
operator() {
YBLog.log("Test", "具体的构件 我做事了");
}
}
//抽象装饰
abstract class Decorator extends Component {
private component: Component = null;
constructor(component: Component)
{
super();
this.component = component;
}
operator() {
this.component.operator();
}
}
//具体的装饰
class aaa extends Decorator {
private doa():void
{
YBLog.log( "Test","修饰类 修饰之后");
}
operator()
{
super.operator();
this.doa();
}
}
let cobj :Component = new componentObj();
cobj = new aaa(cobj); //装饰了之后
cobj.operator();
// Test 具体的构件 我做事了
// Test 修饰类 修饰之后
一优点: Decorator 随意扩展,不会耦合。 装饰模式是继承关系的替代方案,不管装饰多多少层 ,返回的还是 component , is-a的关系。 动态的扩展一个 实现类的功能。
二缺点:多层装饰比较复杂点