• 设计模式


    // 送礼物:红包、花、巧克力
    public interface GiveGift
    {
        void GiveDolls();
        void GiveFlowers();
        void GiveChocolate();
    }
    
    // 送礼物的人
    public class Pursuit : GiveGift
    {
        // 要送的对象
        SchoolGirl mm;        
        
        public Pursuit(SchoolGirl sg)
        {
            mm = sg;
        }
    
        public void GiveDolls()
        {
            Console.WriteLine(mm.Name + ", give you dolls");
        }
    
        public void GiveFlowers()
        {
            Console.WriteLine(mm.Name + ", give you flower");
        }
    
        public void GiveChocolate()
        {
            Console.WriteLine(mm.Name + ", give you chocolate");
        }
    }
        
    public class SchoolGirl
    {
        public string Name { get; set; }
    } 
        
    // 代理送礼物
    public class Proxy : GiveGift
    {
        // 实际的送礼人
        public Pursuit pp;
        
        // 入参:要送的对象
        public Proxy(SchoolGirl sg)
        {
            pp = new Pursuit(sg);
        }
        
        public void GiveChocolate()
        {
            pp.GiveChocolate();
        }
    
        public void GiveDolls()
        {
            pp.GiveDolls();
        }
    
        public void GiveFlowers()
        {
            pp.GiveFlowers();
        }
    }
        
    业务代码:
    SchoolGirl mm = new SchoolGirl() { Name = "na" };
    Model.Proxy px = new Model.Proxy(mm);
    px.GiveChocolate();
    px.GiveDolls();
    px.GiveFlowers();
    

    本来是小刚要给小红送花、巧克力、假币,但是小刚有点害羞,让小方作为代理送给小红。
    小刚和小方都继承自 GiveGift 接口,都有送礼物的功能
    送者 关联 被送者对象,代理 关联 送者对象,代理和送者都接受一个入参:被送者对象,区别是代理接受被送者对象之后,生成关联被送者对象的送者。

    适用代理:
    graph LR 送者--送-->被送者
    使用代理:
    graph LR 送者--继承-->送礼 代理--继承-->送礼
    sequenceDiagram 代理->>送者: 关联 代理->>送者: 调用 送者->>被送者: 送
  • 相关阅读:
    Hbase 统计行数的四种方式
    Solr、MongoDB和Hadoop比较
    三种方法更改MAC OS X下的HOSTS文件
    史上最全前端面试题(含答案)
    图文-水平垂直居中兼容ie6+
    CSS3动画
    jQuery延迟加载(懒加载)插件 – jquery.lazyload.js-Web前端(W3Cways.com)
    web app变革之rem
    MAC中通过gem命令安装compass
    mac下升级ruby环境版本
  • 原文地址:https://www.cnblogs.com/MichaelLoveSna/p/14141608.html
Copyright © 2020-2023  润新知