C# 设计模式 适配器模式

在这里插入图片描述

1.定义接口

   public interface IPayGateway
   {   
       // 统一下单
       void unifiedorder();

       // 退款
       void refund();

       // 查询
       void query();

       // 发红包
       void sendRedPack();  
   }

2.定义适配器

using System;
using System.Collections.Generic;
using System.Text;

namespace adapter
{
    // 支付网关 适配器, 继承于支付网关接口
    public class PayGatewayAdapter : IPayGateway
    {
        // 统一下单功能
        public virtual void unifiedorder()
        {
            throw new NotImplementedException();
        }

        // 退款
        public virtual void refund()
        {
            throw new NotImplementedException();
        }

        // 查询
        public virtual void query()
        {
            throw new NotImplementedException();
        }

        // 发送红包
        public virtual void sendRedPack()
        {
            throw new NotImplementedException();
        }
    }
}

3.定义普通视频会员

using System;
using System.Collections.Generic;
using System.Text;

namespace adapter
{
    // 普通会员 继承 支付网关适配器
    public class ProductVideoOrder : PayGatewayAdapter
    {
        // 重写 统一下单函数
        public override void unifiedorder()
        {
            System.Console.WriteLine("ProductVideoOrder unifiedorder");
        }

        // 重写 退订函数
        public override void refund()
        {
            System.Console.WriteLine("ProductVideoOrder refund");
        }

        // 可以不重写其它函数

    }
}

4.定义VIP视频会员

using System;
using System.Collections.Generic;
using System.Text;

namespace adapter
{
    // VIP会员 继承于支付网关适配器
    public class ProductVipOrder : PayGatewayAdapter
    {
        // 重写 统一下单函数
        public override void unifiedorder()
        {
            System.Console.WriteLine("ProductVipOrder unifiedorder");
        }

        // 重写 退订函数
        public override void refund()
        {
            System.Console.WriteLine("ProductVipOrder refund");
        }

        // 重写 发红包函数(特权函数)
        public override void sendRedPack()
        {
            System.Console.WriteLine("ProductVipOrder SendRedPack");
        }

    }
}

5.主函数

using System;

namespace adapter
{
    public interface IPayGateway
    {   
        // 统一下单
        void unifiedorder();

        // 退款
        void refund();

        // 查询
        void query();

        // 发红包
        void sendRedPack();
           
    }

    class Program
    {
        static void Main(string[] args)
        {
            System.Console.WriteLine("-----------------");
            System.Console.WriteLine("普通会员拥有的函数");
            // 创建普通会员
            ProductVideoOrder videoOrder = new ProductVideoOrder();
            videoOrder.unifiedorder(); // 下单权限
            videoOrder.refund();       // 退款权限
            // 禁止调用
            // videoOrder.SendRedPack(); 

            System.Console.WriteLine("-----------------");
            System.Console.WriteLine("VIP会员拥有的函数");
            // 创建VIP会员
            ProductVipOrder vipOrder = new ProductVipOrder();
            vipOrder.unifiedorder(); // 下单权限
            vipOrder.refund();       // 退款权限
            vipOrder.sendRedPack();  // 发红包权限

            // 经过适配器  
            // 1.可以不实现 支付网关接口的所有函数
            // 2.可以分级重写函数 (自由重写相应函数)
        }
    }
}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廷益--飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值