23种设计模式-07-适配器模式

//已经存在的方法:我会开车
    public class Car
    {
        public void Drive()
        {
            Console.WriteLine("开汽车!");
        }
    }

类适配:

//开飞机(新方法)我不会,所以我需要将这个适配到我会的(已有的方法)
    public interface IAirplane
    {
        void Fly();
    }
    
    public class AirplaneClassAdapter : Car, IAirplane
    {
        public void Fly()
        {
            this.Drive();
        }
    }

对象适配:

public class Airplane
    {
        public virtual void Fly()
        {

        }
    }
    
    public class AirplaneModelAdapter : Airplane
    {
        //此时的readonly与java的final等效
        private readonly Car _Car = new Car();

        public override void Fly()
        {
            _Car.Drive();
        }
    }
class Program
    {
        /// <summary>
        /// 适配器模式:
        /// 将已实现的方法适配到未实现的方法上
        /// 分为:1.类适配器;2.对象适配
        /// 例如:我会开汽车,但是我不会开飞机,但是现在客户要求会开飞机的,我可以使用适配器模式将开汽车适配到开飞机上(不恰当的比喻)
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //TestAdapterClass();
            TestAdapterModel();
            Console.WriteLine("End");
            Console.ReadKey();
        }

        private static void TestAdapterClass()
        {
            //类适配器:
            //1.我会开车,不会开飞机,但是现在客户要求开飞机
            //2.定义开飞机的接口,客户要我开,也就是我必须要实现开飞机的接口
            //3.继承开车的类,同时实现开飞机的接口
            //4.在实现开飞机的方法中调用开车类中的开车的方法(将没有的转换到有的)
            var airplaneAdapter = new AirplaneClassAdapter();
            airplaneAdapter.Fly();
        }

        private static void TestAdapterModel()
        {
            //对象适配器:
            //1.我会开车,不会开飞机,但是现在客户要求开飞机
            //2.定义飞机对象,里面有一个开飞机的方法,不做任何实现(因为我不会开飞机),注意:一定要是虚方法(可以被子类重写)
            //3.定义飞机适配器对象,继承飞机类
            //4.在飞机适配器对象中重写父类的开飞机的方法:在适配器对象内部定义一个开车对象,然后开飞机方法调用开车对象的开车方法(将没有的转换到有的)
            var airplaneAdapter = new AirplaneModelAdapter();
            airplaneAdapter.Fly();
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值