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(); } }

  • 相关阅读:
    开发了套三维光学扫描仪,可以技术转让
    见微知著 带你透过内存看 Slice 和 Array的异同
    Goland 这些技巧,学会开发效率翻倍!
    不懂汇编,也能看懂的 Go interface 原理分析
    win10创建删除文件文件夹需刷新才更新问题
    转载:java中DAO层、Service层、Control层的说明
    代码习惯
    查看网站的服务器和使用的技术
    flutter: CSS规则映射flutter控件-position
    android对话框透传Touch事件
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7253726.html
Copyright © 2011-2022 走看看