微胖少妇激情888AV,精品大屁股,无码中文婷婷超碰 ,最新免费成人性爱视频

好育寶

好育寶

翻譯設計模板 C#設計模式系列:模板方法模式(Template Method)

admin 28 55

當你去銀行取錢時翻譯設計模板,銀行會給你一張取款單。此提款表是一個模板。它將公共內(nèi)容提取到模板中,只留下一部分供用戶填寫。 在軟件系統(tǒng)中,將多個類的公共內(nèi)容提取到模板中的思想就是模板方法的思想圖案。

模板方法模式是一種基于繼承的代碼復用的基本技術。在模板方法模式中,相同的代碼可以放在父類中,不同的方法實現(xiàn)可以放在不同的子類中。

在模板方法模式下,需要準備一個抽象類,以具體方法和具體構造函數(shù)的形式實現(xiàn)部分邏輯,然后聲明一些抽象方法,讓子類實現(xiàn)剩余的邏輯。不同的子類可以以不同的方式實現(xiàn)這些抽象方法。

1.1>,定義

定義運行中算法的框架并將這些步驟推遲到子類中。模板方法模式允許子類在不改變算法結構的情況下重新定義算法的某些特定步驟。

1.2>、使用頻率

中等的

2、模板方法模式結構

2.1>、結構圖

2.2>, 參與者

模板方法模式的參與者:

? AbstractClass:定義一個模板,其子類將重新定義 PrimitiveOperation1 和 PrimitiveOperation2 操作。

? ConcreteClass:實現(xiàn)PrimitiveOperation1和PrimitiveOperation2,完成算法中與具體子類(Client)相關的內(nèi)容。

在模板方法模式下,AbstractClass中的TemplateMethod提供了一個標準模板翻譯設計模板,其中包含兩個方法,PrimitiveOperation1和PrimitiveOperation2。這兩種方法的內(nèi)容可以由Client根據(jù)自己的需要改寫。

3、 模板方法模式結構實現(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();        }    }}

運行輸出:

ConcreteClassA.PrimitiveOperation1()ConcreteClassA.PrimitiveOperation2()ConcreteClassB.PrimitiveOperation1()ConcreteClassB.PrimitiveOperation2()請按任意鍵繼續(xù). . .

4、模板方法模式的應用分析

模板方法模式的應用情況:

? 一次性實現(xiàn)算法的不變部分,將可變行為留給子類來實現(xiàn)。

翻譯設計模板 C#設計模式系列:模板方法模式(Template Method)

? 應將每個子類中的共同行為提取出來并集中到一個共同的父類中,以避免代碼重復。

? 控制子類擴展。模板方法只允許在特定點擴展,而模板部分是穩(wěn)定的。

模板方法模式的特點:

? TemplateMethod 模式是一種非常基礎的設計模式,在面向對象系統(tǒng)中被廣泛使用。它使用*簡潔的機制(基本、多態(tài))為眾多應用框架提供靈活的擴展點,是代碼復用的基本實現(xiàn)結構。

? 在具體實現(xiàn)上,TemplateMethod調(diào)用的虛方法可以有實現(xiàn)也可以沒有實現(xiàn)(抽象方法或虛方法)。但一般建議將它們設置為受保護的方法,以便只有子類可以訪問它們。

? 模板方法模式通過擴展子類來增加新的行為,符合“開閉原則”。

2021少妇久久久久久久久久| 国产毛片A级久久久精品| 4房色开心久久| 高清无码不卡在线观看| 亚洲婷婷AV无码| 欧美色日韩| heyzo.com| 色哟哟色视频日韩精品视频| 亚洲天堂日韩精品| 男女| 欧美成人国产精品高潮| 日韩无码国产精品一区二区三区| 日韩无码网站免费| 久久人人妻人人人人妻性色av| 加勒比视频一区| 精品一区二区蜜桃| 中文字幕人妻熟| 精品熟女少妇AV免费久久| 五月av电影| 久久精品欧美精品日韩精品99| 亚洲综合成人婷婷五月在线观看| 人妻系列无码专区久久五月天| 日丝袜乱交AV| 99超碰伊人| 亚洲一区日韩| 中文字幕人妻熟女人妻av| 青青草一区不卡| 亚洲高清小说在线观看| 狠狠狠狠狠狠天天爱| 久久一区二区三区四区| 国产精品久久久久久人| 日韩精品黄片| 欧美另类一区| 亚洲AV无码在线二区| 久久国产首页| 欧美激情 亚洲| 国产精品久久久一区麻豆最新章节| 安达市| 欧美一级aaa| 最新中文字幕成人播放AV| 国产欧美一区二区精品性|