C#面向對象練習之接口與泛型

  • 定義接⼝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>
    {
    }

有疑問的可以私信博主。
點個關注,給個讚唄!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章