结构型设计模式--代理模式

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

namespace DesignPattern.StructuralPattern.ProxyPattern
{
    public class ProxyPattern
    {
        //代理模式就是对真是类的包装,包装其业务功能,并且不扩展其业务功能(比如我代理类可以对真实类的支付方法增加一些功能,这叫对业务方法的包装;但是真实类只有查账和支付两个方法,代理类不能去新增一个转账业务方法,这样就不是代理类了)真实业务类有啥方法,代理类只能有这些方法
        //这个是视频里老师的意思,但是感觉可以扩展呀?扩展后不是更方便吗?扩展后会造成什么后果吗
        //扩展后就不叫代理类了,代理类是被动的,主动权在真实业务类那

        //代理类的优点:
        //  可以避免对业务类的修改,只要不是修改业务,都可以放到代理类中来
        //  日志,异常处理,缓存(比如查人信息的方法,我放到缓存中,下次来缓存如果有此人,我就不用调真实业务类,提升了性能)  都可以放到代理类中
    }
}
using System;
using System.Collections.Generic;
using System.Text;

namespace DesignPattern.StructuralPattern.ProxyPattern
{
    /// <summary>
    /// 这是一个支付的接口
    /// </summary>
    public interface ISubject
    {
        /// <summary>
        /// 查账
        /// </summary>
        void CheckAccounts();
        /// <summary>
        /// 付钱
        /// </summary>
        void Pay();
    }
}
using System;
using System.Collections.Generic;
using System.Text;

namespace DesignPattern.StructuralPattern.ProxyPattern
{
    /// <summary>
    /// 我这个可能是支付宝
    /// </summary>
    public class RealSubject : ISubject
    {
        public void CheckAccounts()
        {
            Console.WriteLine("支付宝查账");
        }

        public void Pay()
        {
            Console.WriteLine("支付宝支付");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Text;

namespace DesignPattern.StructuralPattern.ProxyPattern
{
    /// <summary>
    /// 这是个代理类,我可以在RealSubject的方法中加入其他功能
    /// </summary>
    public class ProxySubject : ISubject
    {
        private static ISubject RealSubject = null;

        public ProxySubject(ISubject subject)
        {
            RealSubject = subject;
        }

        public void CheckAccounts()
        {
            //加日志,如果出入参  我也可以对出入参进行操作
            //也可以缓存结果
            RealSubject.CheckAccounts();
        }

        public void Pay()
        {
            RealSubject.Pay();
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值