C 設計模式(九)裝飾者模式

2021-10-07 22:22:48 字數 1380 閱讀 9525

首先實現乙個學生學習的功能,例項化乙個學生物件,然後呼叫學生的學習方法,

現在有新的需求,學生學習前需要預習課程,學習後需要複習課程,老師答疑。

要求:在不改動原有封裝的前提下實現以上功能。

在這種情況下,就得使用aop(面向切面程式設計)程式設計思想,

我們就用 繼承+組合 裝飾者模式來實現aop

實現要素:

**實現

/// /// 抽象學生

///

public abstract class abstractstudent

public abstract void study();

}/// /// 具體學生

///

public class student : abstractstudent

開始學習!");}}

/// /// 抽象裝飾者 繼承+組合

///

public abstract class abstractstudentdecorator : abstractstudent

public override void study()

}/// /// 答疑裝飾器

///

public class studentdecoratoranswer : abstractstudentdecorator

public override void study()

}/// /// 預習裝飾器

///

public class studentdecoratorpreview : abstractstudentdecorator

public override void study()

}/// /// 複習裝飾器

///

public class studentdecoratorreview : abstractstudentdecorator

public override void study()

}

前台呼叫:

static void main(string args)

;student = new studentdecoratorpreview(student);

student = new studentdecoratoranswer(student);

student = new studentdecoratorreview(student);

student.study();

}console.readkey();

}

以上便實現了裝飾者模式。

3.總結一下

裝飾器模式適用於在不破壞原有封裝的前提下,實現功能的擴充套件,使得程式擴充套件方便。

設計模式(九) 裝飾者模式

優點 可以提供比繼承更多的靈活性,原有 無須變動,只是在原物件上裝飾一層 外衣 可以動態擴充套件乙個物件的功能,在執行時選擇不同的裝飾器,從而實現不同的行為。缺點 會產生很多的小物件,增加了系統的複雜性 比繼承更加靈活,同時意味著比繼承更易出錯,排錯也困難,對於多次裝飾的物件,可能需要逐級排查。適用...

學習C 設計模式(九)裝飾者模式

using system namespace decorator public class fruit 水果抽象裝飾者 public abstract class fruitdecorator fruit 種植水果 public override void plant 為fruitdecorator...

設計模式 裝飾者模式

public abstract class beverage public abstract double cost public abstract class condimentdecorator extends beverage public class darkroast extends be...