abstract class command {
protected receiver: receiver = null;
constructor(receiver: receiver) {
yblog.log("test", " 父類的建構函式 ");
this.receiver = receiver
abstract excute(): void; // 必須在派生類中實現
abstract class receiver {
abstract dos(): void; // 必須在派生類中實現
class receiver1 extends receiver {
dos() {
yblog.log("test", " 我是接受者1 ,我做苦力 ");
class receiver2 extends receiver {
dos() {
yblog.log("test", " 我是接受者2 ,我做苦力 ");
class ommanda extends command {
constructor() {
yblog.log("test", " ommanda 建構函式 ");
super(new receiver1());
excute() {
this.receiver.dos();
class ommandb extends command {
constructor() {
yblog.log("test", " ommandb 建構函式 ");
super(new receiver2());
excute() {
this.receiver.dos();
//呼叫者
class invoker {
private _command: command = null;
public setcommand(value: command) {
yblog.log("test", " 58 接受到命令");
this._command = value;
public initiatecall() {
yblog.log("test", " 61 執行命令");
this._command.excute()
let invoker:invoker = new invoker();
let comma:ommanda = new ommanda();
let commb:ommandb = new ommandb();
invoker.setcommand(comma); //設定命令
invoker.initiatecall(); //執行
invoker.setcommand(commb);
invoker.initiatecall();
test ommanda 建構函式
test 父類的建構函式
test ommandb 建構函式
test 父類的建構函式
test 58 接受到命令
test 61 執行命令
test 我是接受者1 ,我做苦力
test 58 接受到命令
test 61 執行命令
test 我是接受者2 ,我做苦力
一優點: 解耦 呼叫者 與 具體的接受者沒有 依賴。 功能擴充套件容易 。
二缺點: 命令會有n個 。
TypeScript門面模式
門面模式 外觀模式 減少系統的相互依賴。提高靈活性。提高安全性。要求乙個子系統的外部與其內部的通訊必須通過乙個統一的物件進行。門面是提供乙個高層次的介面,使得系統易於使用。inte ce inobserver 觀察者 update void class aaaa doa yblog.log test...
TypeScript責任鏈模式
責任鏈 結果 class responese else else return null class aaa extends handler gethandlelevel yblog.log test aaa 我的等級是1 return 1 icando request request respon...
TypeScript設計模式之門面 介面卡
看看用typescript怎樣實現常見的設計模式,順便複習一下。學模式最重要的不是記uml,而是知道什麼模式可以解決什麼樣的問題,在做專案時碰到問題可以想到用哪個模式可以解決,uml忘了可以查,思想記住就好。這裡盡量用原創的,實際中能碰到的例子來說明模式的特點和用處。介面卡模式的目的主要在於解決介面...