zoukankan      html  css  js  c++  java
  • 用加减来简单的看策略类

    策略类的组成

    1.抽象策略角色:通常由一个接口或者策略类组成;

    2.具体的策略角色:里面封相关的算法和行为

    3.环境角色:持有一个策略类的引用,为客户端所调用


    作用:

    (自己的理解):将客户端与相关的算法分开,使其互相不干涉


    实现:

    1.要有一个抽象策略角色Strategy(Interface);

    2.要有相关具体的策略角色,来封装这些算法和行为:class AddStratety、class

    SubstarctStrategy

    3.要有环境角色:Environment


    编写:

    抽象策略角色---Strategy: 

    public interface Strategy
    {
        public int Calculate(int a, int b);
    }

    具体策略角色--AddStrategy

    public class Addstrategy implements Strategy
    {

        @Override
        public int Calculate(int a, int b)
        {
            return a + b;
        }

    }

    具体策略角色--SubstractStrategy

    public class SubstractStrategy implements Strategy
    {

        @Override
        public int Calculate(int a, int b)
        {
            return a - b;
        }

    }

    3.环境角色--Environment;

    public class Environment
    {
        
        private Strategy strategy;
        public Environment(Strategy strategy)
        {
            this.strategy = strategy;
        }
        public Strategy getStrategy()
        {
            return strategy;
        }
        public void setStrategy(Strategy strategy)
        {
            this.strategy = strategy;
        }
        public int Calculate(int a, int b)
        {
            return strategy.Calculate(a, b);
        }
    }

    客户端--Client

    public class Client
    {
        public static void main(String[] args)
        {
            Addstrategy addstrategy = new Addstrategy();
            
            Environment environment = new Environment(addstrategy);
            
            System.out.println(environment.Calculate(3, 4));
            
            SubstractStrategy substractstrategy = new SubstractStrategy();
            
            environment.setStrategy(substractstrategy);
            
            System.out.println(environment.Calculate(3, 4));
            
        }
    }

    由客户端中的程序可以看出:当写进一个策略方法的时候,程序为根据策略方法的算法来计算传进的值。避免使用繁琐的if else循环。





  • 相关阅读:
    使用NHibernate(1)--资料汇总
    mono上部署web程序初体验
    一次简单的ORM调研
    【设计模式】02-评判代码质量的标准?如何写出高质量代码?
    【设计模式】01-初识设计模式
    【ARTS】004-第四周(2020.06.15-2020.06.21)
    【leetcode】14-Longest Common Prefix
    【ARTS】003-第三周(2020.06.08-2020.06.14)
    【行成于思】04-读《如何超过大多数人》有感
    【leetcode】009-Palindrome Number
  • 原文地址:https://www.cnblogs.com/penggy/p/7475871.html
Copyright © 2011-2022 走看看