程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#設計模式之Template Method設計模式(模版方法模式)(2)

C#設計模式之Template Method設計模式(模版方法模式)(2)

編輯:關於C語言

三、模板方法模式的示意性代碼

// Template Method pattern -- Structural example
using System;
// "AbstractClass"
abstract class AbstractClass
{
 // Methods
 abstract public void PrimitiveOperation1();
 abstract public void PrimitiveOperation2();
 // The Template method
 public void TemplateMethod()
 {
  Console.WriteLine("In AbstractClass.TemplateMethod()");
  PrimitiveOperation1();
  PrimitiveOperation2();
 }
}
// "ConcreteClass"
class ConcreteClass : AbstractClass
{
 // Methods
 public override void PrimitiveOperation1()
 {
  Console.WriteLine("Called ConcreteClass.PrimitiveOperation1()");
 }
 public override void PrimitiveOperation2()
 {
  Console.WriteLine("Called ConcreteClass.PrimitiveOperation2()");
 }
}
/**//// <summary>
/// ClIEnt test
/// </summary>
public class ClIEnt
{
 public static void Main( string[] args )
 {
  // Create instance and call template method
  ConcreteClass c = new ConcreteClass();
  c.TemplateMethod();
 }
}

四、繼承作為復用的工具

使用繼承作為復用的手段必須慎重,C#語言的設計師對使用繼承作為復用的工具有著不同層次上的認識。

不知其一

首先,初學C#的程序員可能不知道什麼是繼承,或者認為"繼承"是高深的工具。那時候,大部分的功能復用都是通過委派進行的。

知其一、不知其二

然後慢慢地,他們發現在C#語言裡實現繼承並不困難,並且初步認識到繼承可以使子類一下子得到基類的行為。這時他們就會躍躍欲試了,試圖使用繼承作為功能復用的主要工具,並把原來應當使用委派的地方,改為使用繼承,這時繼承就有被濫用的危險。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved