《设计模式之禅》--策略扩展:策略枚举

嘉禾世兴 嘉禾世兴     2022-10-15     166

关键词:

接上篇《设计模式之禅》--代理扩展:动态代理

需求:加减法计算

public enum Calculator {
    //加法运算
    ADD("+") {
        public int exec(int a, int b) {
            return a + b;
        }
    },
    //减法运算
    SUB("-") {
        public int exec(int a, int b) {
            return a - b;
        }
    };
    String value = "";

    //定义成员值类型
    private Calculator(String _value) {
        this.value = _value;
    }

    //获得枚举成员的值
    public String getValue() {
        return this.value;
    }

    //声明一个抽象函数
    public abstract int exec(int a, int b);
}

调用

public class Client {
    public static void main(String[] args) {
        //输入的两个参数是数字
        int a = Integer.parseInt(args[0]);
        String symbol = args[1]; //符号
        int b = Integer.parseInt(args[2]);
        System.out.println("输入的参数为:" + Arrays.toString(args));
        System.out.println("运行结果为:" + a + symbol + b + "=" + Calculator.ADD.exec(a, b));
    }
}

关键

Calculator.ADD.exec(a, b)

《设计模式之禅》之策略模式

一、策略模式的定义策略模式是一种比较简单的模式,也叫做政策模式,其定义如下:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使用的是面向对象的继承和多态机制,我们看看策略模式的三个... 查看详情

《设计模式之禅》strategy_pattern--策略模式

写在前面设计模式之禅这本书也是博主看了几本设计模式的开头才决定以这本书作为学习设计模式的资料。像小傅哥的重学Java设计模式,好处是以真实的项目案例的逻辑来搭配设计模式中的各个模式来帮助你理解,真正的运用... 查看详情

策略模式及优化

(本文参考了《设计模式之禅》一书)何时应该使用策略模式?当我们的程序中某些算法需要自由切换时非常适合使用策略模式。比如我们写一个计算机程序,里面必然有加减乘除等等算法,并且这些算法还应该根据客户点击什... 查看详情

策略模式

概念:本文中的“使用策略类”是指用设计模式中的策略模式来替换原来的switchcase和ifelse语句,这样可以解开耦合,同时也使维护性和系统的可扩展性大大增强。正文:如下面代码所示,ClientCode类会更加枚举State的值来调... 查看详情

策略模式与工厂模式实践(代码片段)

hello,大家好,我是聪聪。文章目录1.介绍2.策略模式结构2.1分支逻辑解释2.2策略模式设计2.3策略模式代码2.3.1通用策略接口及其各策略实现。2.3.2执行上下文信息2.3.3客户端调用2.3.4总结3.常用示例3.1定义一个策略枚举3.2策... 查看详情

策略模式与工厂模式实践(代码片段)

hello,大家好,我是聪聪。文章目录1.介绍2.策略模式结构2.1分支逻辑解释2.2策略模式设计2.3策略模式代码2.3.1通用策略接口及其各策略实现。2.3.2执行上下文信息2.3.3客户端调用2.3.4总结3.常用示例3.1定义一个策略枚举3.2策... 查看详情

策略模式与工厂模式实践(代码片段)

hello,大家好,我是聪聪。文章目录1.介绍2.策略模式结构2.1分支逻辑解释2.2策略模式设计2.3策略模式代码2.3.1通用策略接口及其各策略实现。2.3.2执行上下文信息2.3.3客户端调用2.3.4总结3.常用示例3.1定义一个策略枚举3.2策... 查看详情

《设计模式之禅》--代理扩展:强制代理

接上篇《设计模式之禅》--工厂方法扩展:实现单例需求:就算你找到真实角色,也强制你使用指定代理publicinterfaceIGamePlayer{//登录游戏publicvoidlogin(Stringuser,Stringpassword);//杀怪,这是网络游戏的主要特色publicvoidkillBoss();//升级public... 查看详情

设计模式——策略模式

策略模式的重点并不是策略的实现,而是策略的管理的使用!应用场景:当同一种职责,有不同的实现方式的时候可以使用策略管理;角色:1、策略抽象类  2、策略的具体实现   3、策略环境(此类的作用在代... 查看详情

《设计模式之禅》--代理扩展:动态代理

接上篇《设计模式之禅》--代理扩展:强制代理动态代理就是在实现阶段不用关心代理谁,而在运行阶段才指定代理哪一个对象。相对来说,自己写代理类的方式就是静态代理面向切面编程(AOP)核心就是采用了动态代理机制publ... 查看详情

策略者模式

 1.策略模式定义和优点   策略者模式: 定义一系列的算法把它们一个个封装起来并使他们可以相互替换。优点:    A)策略模式利用组合委托等思想有效避免很多if条件语句。    B)策略模式提供了开... 查看详情

策略模式

...法,将每个算法都封装起来,并且使它们之间可以互换。策略模式的三个角色封装角色:屏蔽高层模块对策略,算法的直接访问,封装可能存在的变化抽象策略角色:策略,算法家族的抽象,通常为借口。定义每个策略或算法必... 查看详情

策略模式(代码片段)

策略模式是我个人觉得很有用的模式,它有用的点就是在于:正常情况下按照对象方法传递的种类不同,那么我们触发的方法不同按照正常写法,我们定义枚举,将枚举类型对应选择的方法写在类的内部,这样一旦出现新的一类... 查看详情

设计模式-策略模式

定义:    策略模式是对算法的包装,把使用算法的责任和算法本身分隔开,委派给不同的对象管理。策略模式通常把一系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。优点:  算法可... 查看详情

玩转策略模式(代码片段)

策略模式源码地址定义定义了算法族(一组行为),分别封装起来(封装实现),让他们之间可以相互替换(扩展),此模式让算法的变化(扩展)独立与使用算法的客户(解耦);场景Strategy描述一组概念相同却行为不同(一... 查看详情

spring中如何使用策略模式

参考技术A这里使用登录做例子介绍如何实现登录的多种策略上图是策略模式的基础模型。contextContext上下文角色,也叫Context封装角色,起承上启下的作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。... 查看详情

java设计模式—策略模式

定义    通过选择策略类,来执行不同算法分支。核心是通过注入对象,改变行为。此模式其实就是springIOC思想。优点   1.算法可以自由的切换。   2.避免使用多重条件判断。   3.便于扩展:增加一个策略只需... 查看详情

java设计模式—策略模式

定义    通过选择策略类,来执行不同算法分支。核心是通过注入对象,改变行为。此模式其实就是springIOC思想。优点   1.算法可以自由的切换。   2.避免使用多重条件判断。   3.便于扩展:增加一个策略只需... 查看详情