zoukankan      html  css  js  c++  java
  • 策略模式

    策略模式

    策略模式是一种定义一系列算法的方法
    * 当一些算法完毕的都是同样的工作,仅仅是实现不同,就能够用同样的方式调用全部的算法。


    * 策略模式能够减少算法的使用类与算法类之间的耦合。

    封装变化点是面向对象的一种非常重要的思维方式。而策略模式就是封装了一系列概念上同样而实现不同的算法的变化之处。

    所需的类:

    • Strategy 策略类(一系列算法类的抽象父类)
    • ConcreteStarategyA 详细算法类(继承自Strategy类)
    • Context 上下文类(策略对象在此类中生成)

    策略模式的Strategy类为Context定义了一系列可供重用的算法或行为,使用继承能够提取出算法类的公共功能。另外,因为每个算法类都是单独存在的,所以策略模式能够简化单元測试。

    在此处我们将简单工厂模式和策略模式相结合,从而使得策略对象在Context类得以生成。

    代码实现:

    Strategy类

    /**
     * 抽象算法类
     */
    public abstract class Strategy {
    
        //算法方法
        public abstract void AlgorithmInterface();
    }

    Context类

    public class Context {
    
        Strategy strategy;
    
        public Context(String type){
    
            switch (type) {
            case "A":
                strategy = new ConcreteStarategyA();
                break;
            case "B":
                strategy = new ConcreteStarategyB();
                break;
            default:
                break;
            }
        }
        //上下文接口
        public void contextInterface(){
            strategy.AlgorithmInterface();//依据详细的算法对象,调用事实上现方法
        }
    
    
    }

    详细的算法类

    public class ConcreteStarategyA extends Strategy{
    
        @Override
        public void AlgorithmInterface() {
            // TODO Auto-generated method stub
    
            //算法A的详细实现
        }
    
    }
    public class Application {
    
        public static void main(String args[]){
            //能够看出client仅仅须要认识Context一个类就能够了。
            //相比于简单工厂模式这样的(策略模式与简单工厂模式相结合)能够减少耦合度。

    Context context = new Context("B"); context.contextInterface(); } }

  • 相关阅读:
    SpringDataJPA中No serializer
    SpringDataJPA中NO Session错误
    SpringDataJpa
    SSJ集成
    Spring创建对象的4种方式
    Properties在xml中添加值
    在ubuntu上进行React-Native开发之环境搭建
    免费学外语?上这10个网站。知道一个算你牛!
    ListView circleImageView Item test
    apk瘦身 提高优化效果
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7253726.html
Copyright © 2011-2022 走看看