第六章 設計模式 模板模式

2021-10-10 10:45:14 字數 1970 閱讀 9105

在模板模式(template pattern)中,乙個抽象類公開定義了執行它的方法的方式/模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。

主要解決:具有公共的行為方法,但每乙個具體子類可能實現的方式存在差異性,重寫該方法。

何時使用:當存在相同演算法時。

如何解決:將相同演算法抽離出來到父類,由子類實現演算法的差異性。

優點:

1、封裝不變部分,擴充套件可變部分。具體細節步驟實現定義在子類中,子類定義詳細處理演算法是不會改變演算法整體結構。

2、提取公共**,便於維護。如資料庫方面的操作設計。

3、行為由父類控制,子類實現。增強了演算法的功能。

缺點:每乙個不同的實現都需要乙個子類來實現,導致類的個數增加,使得系統更加龐大。

使用場景:1、有多個子類共有的方法,且邏輯相同。 2、重要的、複雜的方法,可以考慮作為模板方法。

第一步:宣告乙個電腦抽象類

package com.oysept.template;

public abstract class computer

}

package com.oysept.template;

public class mv extends computer

@override

void startpalyback()

@override

void endpalyback()

}

package com.oysept.template;

public class movie extends computer

@override

void startpalyback()

@override

void endpalyback()

}

第四步:測試

package com.oysept.template;

public class templatetest

}

效果圖:

第一步:建立乙個布料抽象類

package com.oysept.template.cloth;

public abstract class cloth

void sortout()

public final void execute()

}

第二步:烘乾機演算法實現

package com.oysept.template.cloth;

public class ovendry extends cloth

}

第三步:布料晾乾演算法

package com.oysept.template.cloth;

public class dryout extends cloth

}

第四步:測試

package com.oysept.template.cloth;

public class templatetest

}

效果圖:

命令模式 《Head First 設計模式》第六章

將 請求 封裝成物件,以便使用不同的請求 佇列或者日誌來引數化其他物件。命令模式也支援可撤銷操作。客戶 命令 接受命令執行者 被命令物件 device裝置 燈具 public class light public void off 車庫門 public class garagedoor public...

js 設計模式 第六章 chaining

why?chain 是針對物件的,chain鏈條上的所有方法都是這個物件的方法 乙個沒有用chain技巧的 var dom document.getelementbyid dom setstyle dom,color green show dom 如果使用了chain dom setstyle co...

設計模式 第六章 介面卡模式

二 物件介面卡 三 介面介面卡模式 介面卡模式,結構型模式,將某個類的介面轉換成另乙個介面 表示,主要目的是相容性,讓原本因介面不匹配不能一起工作 的二個類可以協同工作,別名包裝器。介面卡模式三種方法 1.類介面卡 2.物件介面卡 3.介面介面卡介面卡類通過繼承src類,實現dst類的介面,完成sr...