zoukankan      html  css  js  c++  java
  • 【原创】设计模式面对面之策略模式

    策略模式

    策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

    类图:

     

    常用的实现方式:

    策略

    public interface IPolicy  {
    
            void Operation();
        }//end IPolicy
    View Code
    public class PolicyA : IPolicy {
    
            public PolicyA(){
    
            }
    
            public void Operation(){
                Console.WriteLine("使用策略A");
            }
    
        }//end PolicyA
    View Code
    public class PolicyB : IPolicy {
    
            public PolicyB(){
    
            }
    
            public void Operation(){
                Console.WriteLine("使用策略B");
            }
    
        }//end PolicyB
    View Code

    策略管理

    public class ExecutePolicy {
    
            public IPolicy Policy;
    
            public ExecutePolicy(){
                Policy=new PolicyA();//设置默认策略
            }
    
            /// 
            /// <param name="policy"></param>
            public void ChangePolicy(IPolicy policy)
            {
                Policy = policy;
            }
    
            public void Execute(){
                Policy.Operation();
            }
    
        }//end ExecutePolicy
    View Code

    调用

     static void Main(string[] args)
            {
              
                var executePolicy = new ExecutePolicy();
    
                executePolicy.Execute();//使用默认策略
    
                executePolicy.ChangePolicy(new PolicyB());//变更策略
                executePolicy.Execute();
    
                Console.ReadLine();
    
    
            }
    View Code

     使用场景:

     策略模式常用于某个功能随着客户的需求自由变化的场景。

    商场活动经常用到,比如折扣,结算随着折扣的变化而变化,至于用那种折扣由商家决定。

    优点

    1.新策略扩展方便

    2.减少了判断逻辑,只要设置下就好了

    缺点

    1.只能选择一种策略

    多种策略组合使用,需要自己在设计原则的基础上根据业务场景去扩展。

  • 相关阅读:
    unable to retrieve container logs for docker kubernetes
    Restart container within pod
    Kubernetes1.3:POD生命周期管理
    Options of the DB storage of prometheus
    prometheus重启hang住问题记录
    prometheus交流资源
    nc 从服务器上传下载文件
    负载均衡监控需求
    prometheus消耗内存问题
    10.Docker 镜像使用
  • 原文地址:https://www.cnblogs.com/dujq/p/7832420.html
Copyright © 2011-2022 走看看