zoukankan      html  css  js  c++  java
  • 代理模式

    // 客户端调用
        class Client
        {
            static void Main(string[] args)
            {
                // 创建一个代理对象并发出请求
                Person proxy = new Friend();
                proxy.BuyProduct();
                Console.Read();
            }
        }
    
        // 抽象主题角色
        public abstract class Person
        {
            public abstract void BuyProduct();
        }
    
        //真实主题角色
        public class RealBuyPerson : Person
        {
            public override void BuyProduct()
            {
                Console.WriteLine("帮我买一个IPhone和一台苹果电脑");
            }
        }
    
        // 代理角色
        public class Friend:Person
        {
            // 引用真实主题实例
            RealBuyPerson realSubject;
    
            public override void BuyProduct()
            {
                Console.WriteLine("通过代理类访问真实实体对象的方法");
                if (realSubject == null)
                {
                    realSubject = new RealBuyPerson();
                }
    
                this.PreBuyProduct();
                // 调用真实主题方法
                realSubject.BuyProduct();
                this.PostBuyProduct();
            }
    
            // 代理角色执行的一些操作
            public void PreBuyProduct()
            {
                // 可能不知一个朋友叫这位朋友带东西,首先这位出国的朋友要对每一位朋友要带的东西列一个清单等
                Console.WriteLine("我怕弄糊涂了,需要列一张清单,张三:要带相机,李四:要带Iphone...........");
            }
            
            // 买完东西之后,代理角色需要针对每位朋友需要的对买来的东西进行分类
            public void PostBuyProduct()
            {
                Console.WriteLine("终于买完了,现在要对东西分一下,相机是张三的;Iphone是李四的..........");
            }
        }
  • 相关阅读:
    IntelliJ Idea 快速配置
    常用资源工具集合
    IntelliJ Idea 快捷键大全
    spring boot注解梳理
    boot中的Scheduling定时器使用笔记
    OKHttp使用笔记
    EasyExcel使用笔记
    自定义注解用AOP实现接口信息打印
    Java的具体集合
    linux修改系统时间
  • 原文地址:https://www.cnblogs.com/gaocong/p/6869029.html
Copyright © 2011-2022 走看看