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>
    {
    }

有疑问的可以私信博主。
点个关注,给个赞呗!

发布了31 篇原创文章 · 获赞 14 · 访问量 4149

猜你喜欢

转载自blog.csdn.net/maybe_ice/article/details/104523785