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

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 代理模式
    {
    
        //追求者的方法
        public interface GiveGift {       //这里运用的接口 ,也可以运用抽象类
            void GiveDoll();
            void GiveFlowers();
            void GiveChocolate();
        }
        public class Pursuit :GiveGift
        {
            SchoolGirl mm;
    
            public Pursuit(SchoolGirl mm)
            {
                this.mm = mm;
            }
    
            public void GiveDolls()
            {
                Console.WriteLine(mm.Name +"送你洋娃娃");
            }
    
            public void GiveFlowers()
            {
                Console.WriteLine(mm.Name + "送你鲜花");
            }
    
            public void GiveChocolate()
            {
                Console.WriteLine(mm.Name +"送你巧克力");
            }
        }   //追求者
    
        public class Proxy : GiveGift       //代理者
        {
            Pursuit gg;
    
            public Proxy(SchoolGirl mm)
            {
                gg = new Pursuit(mm);
            }
    
            public void GiveDolls()
            {
                gg.GiveDolls();
            }
    
            public void GiveFlowers()
            {
                gg.GiveFlowers();
                gg.GiveChocolate();
            }
    
            public void GiveChocolate()
            {
    
                gg.GiveChocolate();
            }
        }
    
        //被追求者类
        public class SchoolGirl
        {
            private string name;
            public string Name
            {
                get { return name; }
                set { name = value; }
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                SchoolGirl jiaojiao = new SchoolGirl();
    
                jiaojiao.Name = "李娇娇";
    
                Proxy daili = new Proxy(jiaojiao);
    
                daili.GiveDolls();
                daili.GiveFlowers();
                daili.GiveChocolate();
                Console.ReadKey();
            }
        }
    }

     Proxy(代理者)  Pursuit(追求者) ,

      理解:  追求者 想去送鲜花,想去送洋娃娃,想去送巧克力 

        public class Pursuit
        {
            SchoolGirl mm;
    
            public Pursuit(SchoolGirl mm)
            {
                this.mm = mm;
            }
    
            public void GiveDolls()
            {
                Console.WriteLine(mm.Name +"送你洋娃娃");
            }
    
            public void GiveFlowers()
            {
                Console.WriteLine(mm.Name + "送你鲜花");
            }
    
            public void GiveChocolate()
            {
                Console.WriteLine(mm.Name +"送你巧克力");
            }
        }

      可在对其进行实例化调用时候,发现  追求者 与被追求者,有直接的接触 ,明显不符合要求 ;

     Pursuit zhuojiayi = new Pursuit(jiaojiao);

      追求者需要把 送花 ,送洋娃娃,送巧克力的意思,告诉,代理人(代理人,也可以具有,送花,送洋娃娃,送巧克力的方法,但 是,代理人,是帮追求送,肯定需要实现代追求者的 送 ......) 

      (追求者,与代理人,都具有送花,送洋娃娃,送巧克力的技能,这里,理所当然,就运用了接口,或者抽象类)

      在代理人的类中,实例化 追求者,然后,继承接口或者抽象类后,在实现接口或者抽象类的方法中,对应调用 已实例化的追求者的方法:

      

    public class Proxy : GiveGift       //代理者
        {
            Pursuit gg;
    
            public Proxy(SchoolGirl mm)
            {
                gg = new Pursuit(mm);
            }
    
            public void GiveDolls()
            {
                gg.GiveDolls();
            }
    
            public void GiveFlowers()
            {
                gg.GiveFlowers();
                gg.GiveChocolate();
            }
    
            public void GiveChocolate()
            {
    
                gg.GiveChocolate();
            }
        }
  • 相关阅读:
    mongodb基础命令
    mongodb集合的增删
    mongodb的创建删除数据库
    单机版mongodb
    《TCP/IP 详解 卷一》读书笔记-----Ping&Traceroute
    《TCP/IP 详解 卷一》读书笔记 -----第四章 ARP
    《TCP/IP详解 卷一》读书笔记-----第三章 IP
    输入三个整数,xyz,最终以从小到大的方式输出。利用中间变量
    循环语句
    3.输入三个整数,xyz,最终以从小到大的方式输出。利用嵌套。
  • 原文地址:https://www.cnblogs.com/zychengzhiit1/p/4554305.html
Copyright © 2011-2022 走看看