C# 架构模式
<?xml version="1.0" encoding="UTF-8"?> 單例模式 (Singleton)
單例講的是當一個類被初次調用時,會產生一個類的實例, 而這個類的實例會貫穿程序的整個生命周期。單例提供了一個全局、唯一的實例。步驟:1.讓類自己創建一個實例;2.提供一個全局訪問這個實例的方法;3.聲明這個類的構造為私有,防止其他對象創建一個新實例。
C#示例:
適配器模式 ?(Adapter)
適配器講的是當現有已存在的類不符合新環境的接口時,需要復用現有代碼。適配器模式有類適配器和對象適配器。
類適配器用包裝類(所謂的適配器)繼承新環境的接口和舊類,在類適配器中實現現有接口,實現時直接在接口方法里調用或者包裝舊類的方法。
C#示例:public class OldPower
{
???? public void GetPower220v()
???? {
? ? ? ? ? Console.WriteLine("220v power.");
???? }
}
public interface IPower
{
void GetPower();
}
public class Adapter :? IPower, OldPower
{
???? public void GetPower()
???? {
????????? return base.GetPower220v();
???? }
}
//Use
public class Program
{
???? void Main(string[] Args)
???? {
????????? IPower p = new Adapter();
????????? p.GetPower();?????????
???? }
}
對象適配器用包裝類(適配器)繼承新環境的接口,在類適配器中實例化舊類,實現接口時在接口方法里調用或者包裝已經實例化的舊類對象的方法。
C#示例:public class OldPower
{
???? public void GetPower220v()
???? {
???? ///
???? }
}
public interface IPower
{
void GetPower();
}
public class ObjectAdapter : IPower
{
???? private Power _p = new Power();
????
???? public void GetPower()
???? {
????????? if (null != _p)
????????? {
?????????????? _p.GetPower220v();
????????? }
???? }
}
//Use
public class Program
{
???? void Main(string[] Args)
???? {
????????? IPower p = new Adapter();
????????? p.GetPower();?????????
???? }
}
平時建議盡量用對象適配器而不是類適配器, 因為類適配器的多繼承可能引進一些不必要的東西。對象適配器更加松耦合。
單例講的是當一個類被初次調用時,會產生一個類的實例, 而這個類的實例會貫穿程序的整個生命周期。單例提供了一個全局、唯一的實例。步驟:1.讓類自己創建一個實例;2.提供一個全局訪問這個實例的方法;3.聲明這個類的構造為私有,防止其他對象創建一個新實例。
C#示例:
? ??public???class?Singleton
????{
????????private?static?Singleton?instance;
????????private?Singleton()
????????{
????????}
?
????????public?static?Singleton?CreateInstance()
????????{
????????????if?(instance ==?null)
????????????{
????????????????instance =?new?Singleton();?
????????????}
????????????return?instance;
????????}
????}
}適配器模式 ?(Adapter)
適配器講的是當現有已存在的類不符合新環境的接口時,需要復用現有代碼。適配器模式有類適配器和對象適配器。
類適配器用包裝類(所謂的適配器)繼承新環境的接口和舊類,在類適配器中實現現有接口,實現時直接在接口方法里調用或者包裝舊類的方法。
C#示例:public class OldPower
{
???? public void GetPower220v()
???? {
? ? ? ? ? Console.WriteLine("220v power.");
???? }
}
public interface IPower
{
void GetPower();
}
public class Adapter :? IPower, OldPower
{
???? public void GetPower()
???? {
????????? return base.GetPower220v();
???? }
}
//Use
public class Program
{
???? void Main(string[] Args)
???? {
????????? IPower p = new Adapter();
????????? p.GetPower();?????????
???? }
}
對象適配器用包裝類(適配器)繼承新環境的接口,在類適配器中實例化舊類,實現接口時在接口方法里調用或者包裝已經實例化的舊類對象的方法。
C#示例:public class OldPower
{
???? public void GetPower220v()
???? {
???? ///
???? }
}
public interface IPower
{
void GetPower();
}
public class ObjectAdapter : IPower
{
???? private Power _p = new Power();
????
???? public void GetPower()
???? {
????????? if (null != _p)
????????? {
?????????????? _p.GetPower220v();
????????? }
???? }
}
//Use
public class Program
{
???? void Main(string[] Args)
???? {
????????? IPower p = new Adapter();
????????? p.GetPower();?????????
???? }
}
平時建議盡量用對象適配器而不是類適配器, 因為類適配器的多繼承可能引進一些不必要的東西。對象適配器更加松耦合。
轉載于:https://www.cnblogs.com/muzizongheng/p/3170865.html
總結
- 上一篇: 树中两个结点的最低公共祖先
- 下一篇: 我的安装过程