[.NET] 善用 介面或類別 提昇程式碼效率
在上篇提到了用泛型來進行重構 [.NET] 善用 泛型方法 提高程式碼效率,除了使用泛型之外我們也能將程式碼重覆的地方抽離出來變成介面(Interface)或抽像類別(Abstract class),就用上次的原型程式碼來當範例,咱們來複習一下。
Company及Family兩個類別
然後還有一個Print.PrintName靜態方法
{
public static string PrintName(Commany Commany)
{
if (Commany==null)
return null;
string data = string.Format("名稱:{0},地址:{1}",Company.Name,Company.Address);
return data;
}
public static string PrintName(Family Family)
{
if (Family == null)
return null;
string data = string.Format("名稱:{0},地址:{1}", Family.Name, Family.Address);
return data;
}
}
在用戶端呼叫
{
Company company = new Company() { Name = "點部落", Address = "魔界村" };
Family family = new Family { Name = "余宅", Address = "地球村" };
Console.WriteLine(Print.PrintName(company));
Console.WriteLine(Print.PrintName(family));
}
到目前為止都跟上一篇一樣
使用介面抽離
{
string Name { get; set; }
string Address { get; set; }
}
Company 跟 Family 同樣是繼承IPrint介面並且實作
{
public string Name { get; set; }
public string Address { get; set; }
}
{
public string Name { get; set; }
public string Address { get; set; }
}
將PrintName改寫成以下:
{
if (Print == null)
return null;
string data = null;
data = string.Format("名稱:{0},地址:{1}", Print.Name, Print.Address);
return data;
}
在用戶端裡呼叫
{
IPrint company= new Company() { Name = "點部落", Address = "魔界村" };
IPrint family = new Family { Name = "余宅", Address = "地球村" };
Console.WriteLine(Print.PrintName(company));
Console.WriteLine(Print.PrintName(family));
}
利用抽象類別,介面跟抽像類別在使用上有些許不同,但目的其實是相同的,建立一個AbsPrint類別,裡面的屬性已經實作過
{
public string Name { get; set; }
public string Address { get; set; }
}
所以繼承AbsPrint的類別就已經擁有Name及Address屬性
{
}
public class Family : AbsPrint
{
}
PrintName方法改成以下:
{
if (Print == null)
return null;
string data = null;
data = string.Format("名稱:{0},地址:{1}", Print.Name, Print.Address);
return data;
}
在用戶端則跟用介面差不多只是實體化的東西不一樣
{
AbsPrint company = new Company() { Name = "點部落", Address = "魔界村" };
AbsPrint family = new Family { Name = "余宅", Address = "地球村" };
Console.WriteLine(Print.PrintName(company));
Console.WriteLine(Print.PrintName(family));
}
把重覆的程式碼抽離到抽像類別實作,可以減少程式碼重複以及維持程式碼的一致性。
後記:
使用抽像類別實作程式碼,這是設計模式中的範本模式,這是很多人常在用的模式,在本篇的例子可能感覺不出來他的好處,下次應該再舉更詳細的例子。
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET