翻譯設(shè)計(jì)模板 C#設(shè)計(jì)模式系列:模板方法模式(Template Method)
日期:2023-03-11 12:39:36 / 人氣: 452 / 發(fā)布者:成都翻譯公司
在軟件系統(tǒng)中,將多個(gè)類的共有內(nèi)容提取到一個(gè)模板中的思想便是模板方法模式的思想。2、模板方法模式結(jié)構(gòu)3、模板方法模式結(jié)構(gòu)實(shí)現(xiàn)4、模板方法模式應(yīng)用分析模板方法模式特點(diǎn):當(dāng)你去銀行取錢時(shí)翻譯設(shè)計(jì)模板,銀行會(huì)給你一張取款單。此提款表是一個(gè)模板。它將公共內(nèi)容提取到模板中,只留下一部分供用戶填寫。 在軟件系統(tǒng)中,將多個(gè)類的公共內(nèi)容提取到模板中的思想就是模板方法的思想圖案。
模板方法模式是一種基于繼承的代碼復(fù)用的基本技術(shù)。在模板方法模式中,相同的代碼可以放在父類中,不同的方法實(shí)現(xiàn)可以放在不同的子類中。
在模板方法模式下,需要準(zhǔn)備一個(gè)抽象類,以具體方法和具體構(gòu)造函數(shù)的形式實(shí)現(xiàn)部分邏輯,然后聲明一些抽象方法,讓子類實(shí)現(xiàn)剩余的邏輯。不同的子類可以以不同的方式實(shí)現(xiàn)這些抽象方法。
1.1>,定義
定義運(yùn)行中算法的框架并將這些步驟推遲到子類中。模板方法模式允許子類在不改變算法結(jié)構(gòu)的情況下重新定義算法的某些特定步驟。
1.2>、使用頻率
中等的
2、模板方法模式結(jié)構(gòu)
2.1>、結(jié)構(gòu)圖
2.2>, 參與者
模板方法模式的參與者:
? AbstractClass:定義一個(gè)模板,其子類將重新定義 PrimitiveOperation1 和 PrimitiveOperation2 操作。
? ConcreteClass:實(shí)現(xiàn)PrimitiveOperation1和PrimitiveOperation2,完成算法中與具體子類(Client)相關(guān)的內(nèi)容。
在模板方法模式下,AbstractClass中的TemplateMethod提供了一個(gè)標(biāo)準(zhǔn)模板翻譯設(shè)計(jì)模板,其中包含兩個(gè)方法,PrimitiveOperation1和PrimitiveOperation2。這兩種方法的內(nèi)容可以由Client根據(jù)自己的需要改寫。
3、 模板方法模式結(jié)構(gòu)實(shí)現(xiàn)
抽象類.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DesignPatterns.TemplateMethodPattern.Structural { public abstract class AbstractClass { public abstract void PrimitiveOperation1(); public abstract void PrimitiveOperation2(); ////// The "Template method" /// public void TemplateMethod() { PrimitiveOperation1(); PrimitiveOperation2(); Console.WriteLine(""); } } }
具體類A.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DesignPatterns.TemplateMethodPattern.Structural { public class ConcreteClassA : AbstractClass { public override void PrimitiveOperation1() { Console.WriteLine("ConcreteClassA.PrimitiveOperation1()"); } public override void PrimitiveOperation2() { Console.WriteLine("ConcreteClassA.PrimitiveOperation2()"); } } }
具體類B.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DesignPatterns.TemplateMethodPattern.Structural { public class ConcreteClassB : AbstractClass { public override void PrimitiveOperation1() { Console.WriteLine("ConcreteClassB.PrimitiveOperation1()"); } public override void PrimitiveOperation2() { Console.WriteLine("ConcreteClassB.PrimitiveOperation2()"); } } }
程序.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using DesignPatterns.TemplateMethodPattern.Structural; namespace DesignPatterns.TemplateMethodPattern { class Program { static void Main(string[] args) { AbstractClass aA = new ConcreteClassA(); aA.TemplateMethod(); AbstractClass aB = new ConcreteClassB(); aB.TemplateMethod(); } } }
運(yùn)行輸出:
ConcreteClassA.PrimitiveOperation1()
ConcreteClassA.PrimitiveOperation2()
ConcreteClassB.PrimitiveOperation1()
ConcreteClassB.PrimitiveOperation2()
請(qǐng)按任意鍵繼續(xù). . .
4、模板方法模式的應(yīng)用分析
模板方法模式的應(yīng)用情況:
? 一次性實(shí)現(xiàn)算法的不變部分,將可變行為留給子類來實(shí)現(xiàn)。
? 應(yīng)將每個(gè)子類中的共同行為提取出來并集中到一個(gè)共同的父類中,以避免代碼重復(fù)。
? 控制子類擴(kuò)展。模板方法只允許在特定點(diǎn)擴(kuò)展,而模板部分是穩(wěn)定的。
模板方法模式的特點(diǎn):
? TemplateMethod 模式是一種非?;A(chǔ)的設(shè)計(jì)模式,在面向?qū)ο笙到y(tǒng)中被廣泛使用。它使用*簡(jiǎn)潔的機(jī)制(基本、多態(tài))為眾多應(yīng)用框架提供靈活的擴(kuò)展點(diǎn),是代碼復(fù)用的基本實(shí)現(xiàn)結(jié)構(gòu)。
? 在具體實(shí)現(xiàn)上,TemplateMethod調(diào)用的虛方法可以有實(shí)現(xiàn)也可以沒有實(shí)現(xiàn)(抽象方法或虛方法)。但一般建議將它們?cè)O(shè)置為受保護(hù)的方法,以便只有子類可以訪問它們。
? 模板方法模式通過擴(kuò)展子類來增加新的行為,符合“開閉原則”。
相關(guān)閱讀Relate
熱門文章 Recent
- 英語作文模板帶翻譯2023-03-11
- 外貿(mào)翻譯人員個(gè)人簡(jiǎn)歷模板 英語外貿(mào)電子商務(wù)個(gè)人簡(jiǎn)歷模板2023-03-11
- 迪拜駕照翻譯模板 迪拜考駕照換駕照一條龍,給您*優(yōu)質(zhì)的服務(wù)!2023-03-11
- 外貿(mào)翻譯英語簡(jiǎn)歷模板 商務(wù)英語專業(yè)個(gè)人簡(jiǎn)歷模板2023-03-11
- 日語醫(yī)學(xué)病例翻譯模板 日語翻譯的小技巧2023-03-11
- 探親簽材料翻譯模板 加拿大簽證資料及邀請(qǐng)函2023-03-11
- 辦簽證退休證翻譯模板 出國簽證翻譯_簽證材料翻譯_簽證翻譯蓋章2023-03-11
- 健康證法語翻譯模板 健康證明翻譯_健康證明英文_健康證明翻譯公司2023-03-11
- 永州正規(guī)的合同協(xié)議翻譯模板 翻譯合同樣書二(官方版)2023-03-11
- 加拿大簽證營(yíng)業(yè)執(zhí)照翻譯模板 加拿大商務(wù)簽證2023-03-11


