zoukankan      html  css  js  c++  java
  • C# 设计模式(13)代理模式

    代理模式

    1. 基于开闭原则 OCP: 对扩展开放,对修改封闭。

    购物类:

    namespace ProxyPattern
    {
        public interface IShopping
        {
            void ChoiceProduct(string product);
            void PayForProduct();
            public string GetCurrentProducts();
        }
        public class Shopping : IShopping
        {
            private readonly List<string> _productList = new List<string>();
    
            public void ChoiceProduct(string product)
            {
                if (!string.IsNullOrEmpty(product))
                {
                    _productList.Add(product);
                    Console.WriteLine($"You has choiced {product}");
                }
            }
    
            public void PayForProduct()
            {
                foreach (var product in _productList)
                {
                    Console.WriteLine($"You has bought {product}");
                }
            }
    
            public string GetCurrentProducts()
            {
                string allProducts = "";
                foreach (string item in _productList)
                {
                    allProducts += item + " ";
                }
                return allProducts;
            }
        }
    }
    

    代理类:

        public class ProxyShopping
        {
            private readonly IShopping _shopping = new Shopping();
    
            public void ChoiceProduct(string product)
            {
                _shopping.ChoiceProduct(product);
                Console.WriteLine($"Add [choice {product}] Debug Log.");
            }
    
            public void PayForProduct()
            {
                _shopping.PayForProduct();
                Console.WriteLine($@"Add [pay for {_shopping.GetCurrentProducts()}] Debug Log.");
            }
        }
    

    代码调用:

        class Program
        {
            static void Main(string[] args)
            {
                ProxyShopping proxyShopping = new ProxyShopping();
                proxyShopping.ChoiceProduct("Clothes");
                proxyShopping.ChoiceProduct("PC");
                proxyShopping.PayForProduct();
            }
        }
    

    结果:

  • 相关阅读:
    Shell 函数
    Shell test命令/流程控制
    Shell 变量/echo命令
    Linux vi/vim and linux yum 命令
    Linux磁盘管理
    Linux 用户和用户组管理
    Linux 文件与目录管理
    Linux root用户密码重置,远程登陆,文件基本属性
    Linux简介安装、系统启动过程、目录结构
    Linux系统安装时分区的介绍
  • 原文地址:https://www.cnblogs.com/YourDirection/p/14085854.html
Copyright © 2011-2022 走看看