一
- 定義接⼝IBattle,該接⼝包含功能Attack(),Move(),Jump();定義接⼝IRest,該接⼝包含
功能SitDown(),Sleep()。定義接⼝IPlayer,接⼝IPlayer繼承IBattle與IRest。定義Soldier類
實現IPlayer接⼝
interface IBattle
{
/// <summary>
/// 攻擊方法
/// </summary>
void Attack();
/// <summary>
/// 移動方法
/// </summary>
void Move();
/// <summary>
/// 跳躍方法
/// </summary>
void Jump();
}
/// <summary>
/// 休息接口
/// </summary>
interface IRest
{
/// <summary>
/// 坐下方法
/// </summary>
void SitDown();
/// <summary>
/// 睡覺方法
/// </summary>
void Sleep();
}
/// <summary>
/// 玩家接口,繼承搏鬥與休息接口
/// </summary>
interface IPlayer : IBattle, IRest
{
}
class Soldier : IPlayer
{
public void Attack()
{
Console.WriteLine("攻擊!");
}
public void Jump()
{
Console.WriteLine("跳躍!");
}
public void Move()
{
Console.WriteLine("移動!");
}
public void SitDown()
{
Console.WriteLine("坐下!");
}
public void Sleep()
{
Console.WriteLine("睡覺!");
}
}
二
- 定義接⼝IUSB,該接⼝當中定義了數據讀取的⽅法ReadData();定義抽象類存儲設備
MemoryDevice,該抽象類MemoryDevice實現了IUSB接⼝,並且當中有抽象⽅法
Description,⽤於不同存儲設備插⼊電腦⾃我描述。存儲設備分爲固態硬盤SolidStateDisk,
機械硬盤HardDisk,U盤UDisk三種。定義電腦類,該類包含功能:插⼊硬件設備。
/// <summary>
/// USB接口
/// </summary>
interface IUSB
{
/// <summary>
/// 讀取數據方法
/// </summary>
void ReadData();
}
/// <summary>
/// 存儲設備類
/// </summary>
abstract class MemoryDevice : IUSB
{
public virtual void ReadData()
{
Console.WriteLine("讀取數據中。。。");
}
/// <summary>
/// 自我描述方法
/// </summary>
public abstract void Description();
}
/// <summary>
/// 固態硬盤類,繼承MemoryDevice類
/// </summary>
class SolidStateDisk : MemoryDevice
{
public override void ReadData()
{
Console.WriteLine("SSD讀取數據中。。。");
}
public override void Description()
{
Console.WriteLine("我是個固態硬盤,我的讀寫速度飛快!");
}
}
/// <summary>
/// 機械硬盤類,繼承MemoryDevice類
/// </summary>
class HardDisk : MemoryDevice
{
public override void ReadData()
{
Console.WriteLine("HD讀取數據中。。。");
}
public override void Description()
{
Console.WriteLine("我是機械硬盤,讀寫速度一般。");
}
}
/// <summary>
/// U盤類,繼承MemoryDevice類
/// </summary>
class UDisk : MemoryDevice
{
public override void Description()
{
Console.WriteLine("我是U盤,讀寫速度很慢。");
}
public override void ReadData()
{
Console.WriteLine("U盤讀取數據中。。。");
}
}
/// <summary>
/// 電腦類
/// </summary>
class Computer
{
/// <summary>
/// 插入設備方法
/// </summary>
/// <param name="memoryDevice"></param>
public void InputHardware(MemoryDevice memoryDevice)
{
memoryDevice.ReadData();
memoryDevice.Description();
}
}
三
- 使⽤泛型創建⼀個單例類基類,想要成爲單例只需要繼承該基類即可
/// <summary>
/// 單例類基類
/// </summary>
class SingletonBase<T> where T : class, new()
{
/// <summary>
/// 聲明靜態引用
/// </summary>
private static T singleton;
/// <summary>
/// 實現單例
/// </summary>
public static T Singleton
{
get
{
if (singleton == null)
{
singleton = new T();
}
return singleton;
}
}
}
class Person : SingletonBase<Person>
{
}
有疑問的可以私信博主。
點個關注,給個讚唄!