首页 > 其他分享 >大话设计模式之策略模式笔记

大话设计模式之策略模式笔记

时间:2023-10-20 18:12:49浏览次数:32  
标签:double 大话 笔记 class OperationStratage numA 设计模式 public stratage

策略模式结构

classDiagram class Context{ -Statage statage +ContextIntegace(Statage statage) } class Stratage{ <<abstract>> + algorithmInterface() } class ConcreateStratage1{ } class ConcreateStratage2{ } Context o-- Stratage ConcreateStratage1 --|>Stratage ConcreateStratage2 --|>Stratage

以实现加、减、乘、除的计算器功能为例

分析:加、减、乘、除都是一种策略

classDiagram class StratageContext{ -OperatrionStratage statage +ContextIntegace(Statage statage) } class OperatrionStratage{ <<abstract>> + contextInterface() } class ConcreateStratageAdd{ } class ConcreateStratageSub{ } StratageContext o-- OperatrionStratage ConcreateStratageAdd --|>OperatrionStratage ConcreateStratageSub --|>OperatrionStratage

Context 上下文

public class StratageContext {
    private OperationStratage stratage;

    public OperationStratage getStratage() {
        return stratage;
    }

    public void setStratage(OperationStratage stratage) {
        this.stratage = stratage;
    }

    public StratageContext() {
        super();
    }

    public StratageContext(OperationStratage stratage) {
        super();
        this.stratage = stratage;
    }

    public double contextInterface(double numA, double numB) {
        return stratage.algMethod(numA, numB);
    }
}

策略

public abstract class OperationStratage {

    public abstract double algMethod(double numA, double numB);

}


public class ConcreateStratageAdd extends OperationStratage {

    @Override
    public double algMethod(double numA, double numB) {
        return numA + numB;
    }

}

public class ConcreateStratageSub extends OperationStratage {

    @Override
    public double algMethod(double numA, double numB) {
        return numA - numB;
    }

}

标签:double,大话,笔记,class,OperationStratage,numA,设计模式,public,stratage
From: https://www.cnblogs.com/lixiuming521125/p/17777680.html

相关文章

  • 大话设计模式之简单工厂模式笔记
    简单工厂模式以实现加、减、乘、除的计算器功能为例初级代码:输入数字交互界面@SuppressWarnings("resource")publicstaticvoidmain(String[]args){System.out.println("**********************************************");System.out.println("......
  • 算法学习笔记(31): 李超线段树
    李超线段树是一种按照值域维护一次函数最值的数据结构,其核心在于一次函数和值域的双单调性。如果预先对于值域离散也可以维护其最值。也就是说只要满足时一次函数,以及下标的单调性都可以利用李超线段树维护。李超线段树就是利用线段树来维护一次函数的最值,每一个结点对应了一......
  • ansible学习笔记
    ansible目录ansible安装1.配置1.1Inventory(主机清单)1.2ansible.cfg2.模块2.1yum模块2.2copy模块2.3get_url模块2.4fetch模块2.5file模块2.6service模块2.7group模块2.8user模块2.9cron模块2.10mount模块2.11firewalld模块2.12command/shell/raw模块2.13script......
  • CSS3属性详解(一)文本 盒模型中的 box-ssize 属性 处理兼容性问题:私有前缀 边框 背景属
    CSS3是用于为HTML文档添加样式和布局的最新版本的层叠样式表(CascadingStyleSheets)。下面是一些常用的CSS3属性及其详细解释:border-radius:设置元素的边框圆角的半径。可以使用四个值设置四个不同的圆角半径,也可以只使用一个值来设置统一的圆角。box-shadow:创建一个元素的阴影效果......
  • HTML5+CSS3+移动web 前端开发入门笔记(一)
    千古前端图文教程千古前端图文教程git的使用Git是一个分布式版本控制系统,它的作用主要包括以下几个方面:版本管理:Git可以跟踪文件的修改历史,记录每次提交的内容、时间和作者等信息。通过Git,开发人员可以轻松地查看和比较不同版本之间的差异,回滚到历史版本或者创建新的分支。多人协作......
  • 设计模式?
    设计模式只是针对重复出现的问题的通用设计解决方案。与其一遍又一遍地解决相同的问题,不如想到一种每次遇到相同问题时都可以使用的解决方案,并且这些解决方案已经找到了!幸运的是,有人已经想到让我们的生活更轻松!:)设计模式有多种不同。但我们主要有3个:创造:它是关于创建对象的过程......
  • 麒麟系统开发笔记(十三):在国产麒麟系统上编译OSG库、搭建基础开发环境和移植测试Demo
    前言  在国产麒麟系统上实现C++三维仿真,使用OSG技术,其他基于web的技术也是可以但是交互上鼠标拽托等交互相对差一些,所以这块需要斟酌选择到底是何种技术来取舍。  本篇在厂家指定的麒麟系统上编译OSG。 环境系统版本:银河麒麟桌面操作系统V10(SP1)(注意:不对外提供)......
  • React学习笔记12-循环渲染
    在vue中我们一般是通过v-for指令来进行循环渲染的,但react中没有封装相关指令供我们调用在react中我们可以通过数组的map方法来进行数据的循环渲染importReact,{Component}from'react'exportdefaultclassAppextendsComponent{constructor(){super(......
  • React学习笔记11-状态(state)
    状态就是组件的数据,由组件自己设置和更改,也就是说由组件自己维护,使用状态的目的就是为了在不同的状态下使组件的显示不同(自己管理) 定义状态的方法 可以在构造函数中定义也可以直接在类中通过变量的形式来定义/*eslint-disableeqeqeq*/importReact,{Component}f......
  • 学习笔记
    学习“红色飓风2笔记”1,ISE中也可以完成仿真啊,参见3s400试验指导书P27.2,增加约束:  时序约束:约束设计的时序和时钟频率,双击CreateTimingConstraints:   上面的对话框里面有四个复选页:    Global:用于附加全局约束,包括周期约束,输入延迟约束和输出延迟约束    Ports:附加......