学习高校课程-软件设计模式-状态、策略和模版模式(lec12)

news/2024/12/26 18:39:53/文章来源:https://www.cnblogs.com/Mephostopheles/p/18627202

State: Problem

A finite number of states
The program behaves differently within a state
Can be switched from one state to another, and switching rules (transitions) are also finite and predetermined
有限数量的状态
程序在某个状态下的行为有所不同
可以从一种状态切换到另一种状态,并且切换规则(转换)也是有限且预先确定的

State: Solution

Create new classes for all possible states, and extract all state-specific behaviors into these classes
为所有可能的状态创建新类,并将所有特定于状态的行为提取到这些类中

Strategy: Problem

Example: route planning feature in a navigation app
V1: routes over roads
V2: walking routes
V3: public transport
示例:导航应用中的路线规划功能
V1:道路上的路线
V2:步行路线
V3:公共交通

Strategy: Solution

Extract the algorithms into separate classes: strategies
The client is responsible for selecting the strategy
Switching the strategy is possible at runtime
将算法提取到单独的类中:策略
客户负责选择策略
策略切换是可能在运行时

Template Method: Problem

Example: a data mining application that analyzes documents
Problem 1: a lot of similar code
Problem 2: the client depends on the classes
示例:分析文档的数据挖掘应用程序
问题1:大量类似的代码
问题2:客户端依赖于类

Template Method: Solution

Break down the algorithm into steps
Turn the steps into methods
Call the methods in a single template method
将算法分解为步骤
把步骤变成方法
在单个模板中调用方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/858145.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java项目实战:基于 Spring、SpringMVC、MyBatis 与 JSP 的新闻管理系统架构设计与功能实现

1. 引言 1.1目的 本设计文档旨在详细描述基于SSM框架的新闻管理系统的设计方案,包括系统架构、功能模块、数据库设计、接口设计等方面,为系统的开发、测试和维护提供依据,确保系统能够满足用户需求,具有良好的性能、可扩展性和可维护性。 1.2范围 本系统涵盖了新闻管理的各…

宠物公司双旦工作管理,啥办公软件可优化流程?

双旦佳节来临,宠物行业迎来销售热潮,业务量呈井喷式增长。在这繁忙时期,高效的团队协作办公软件成为避免任务延误、确保业务顺畅运转的关键。此类软件能让各部门紧密配合,精准执行任务,提升整体工作效率。以下将盘点 6 款适用于宠物公司的可视化团队协作办公软件。 一、板…

基于Jenkins+Docker的自动化部署实践——整合Git与Python脚本实现远程部署

环境说明:Ubuntu:v24.04.1 LTS Jekins:v2.491 Docker:v27.4.0 Gogs:v0.14.0 - 可选。可以选择Github,Gitlab或者Gitea等Git仓库,不限仓库类型 1Panel: v1.10.21-lts - 可选。这里主要用于查看和管理Docker容器Jenkins实现参数化构建 这里通过Docker进行安装 【系统管理】…

ABB弧焊机器人保养主要包括哪些?

ABB弧焊机器人保养主要包括日检查及维护、周检查及维护和月检查及维护三个方面。一、日检查及维护 - 检查送丝机构,包括送丝力距是否正常,送丝导管是否损坏,有无异常报警。 - 检查气体流量是否正常。 - 检查焊枪安全保护系统是否正常(禁止关闭焊枪安全保护工作…

视频流媒体播放器EasyPlayer-RTSP原始录像文件被新录像文件覆盖是什么原因

媒体播放器EasyPlayer有很多版本,其中EasyPlayer-RTSP就是能够输出RTSP视频流的版本,由于RTSP的需求众多,因此RTSP版本的用户也是很广泛。 EasyPlayer-RTSP录像文件被覆盖EasyPlayer-RTSP是可以进行录像的,在录制录像文件时会出现开始录像后产生一个录像文件,停止录像后,…

electron 打包

electron打包方案electron-builderelectron-builder 1. 安装 electron-builder npm install --save-dev electron-builder2.修改 package.json,添加一条scripts命令和build配置。"build": "electron-builder --win" // 打包命令"build": {"…

MP地面站二次开发教程Mavlink通讯协议

Mavlink主要是飞控和地面站之间的消息指令发送,包含地面站解析飞控发来的mavlink数据流,和地面站向飞控发送mavlink指令(指令,航点数据,校准数据)两部分。地面站有mavlink库,对应飞控端也有一套mavlink库。 1、协议介绍Mavlink协议官网:http://qgroundcontrol.org/mavlink…

【unity】学习制作类银河恶魔城游戏-1-

vs连接unity创建对象,刚体,碰撞体积,材料 创建一个正方体当作平台,创建一个球给球加入实体/刚体,使其能够随重力下落给球加入圆形碰撞体(collider)给平台加入碰撞体更改球的下落速度(gravity n.重力)启动!!发现球落在了平台上创建物理材料,修改摩檫力和弹力给球应用…

智能监控与实时响应:下一代防火墙运维方案

北京智和信通防火墙监控运维方案,实现多品牌防火墙集中管理、实时监控、告警快速响应,支持远程控制和策略编排,通过智能化运维降低运维负担,确保网络稳定高效运作。 防火墙是维护网络安全的关键要素之一。随着网络攻击手段的不断复杂化、智能化以及高速化的发展,防…

实验六c++

实验任务四 源代码 Vector.hpp1 #include<iostream>2 #include<stdexcept>3 using namespace std;4 5 template<typename T>6 class Vector {7 public:8 Vector(int n);9 Vector(int n, T a); 10 Vector(const Vector<T>& c); 11 …

10款装了不后悔的高效PC软件,桌面便签、日历、录屏、搜索……

在使用Win电脑办公时,一些简单高效的工具软件可以让工作事半功倍!今天就来介绍10款装了不后悔的软件! 1、浏览器:夸克 电脑浏览器,除了电脑自带的edge,还可以试试夸克,它有自带的网盘,可以保存重要的资料,在手机端也可以同步使用。2、桌面便签+待办+日历:敬业签 在电…

Win10 系统安装 Linux 子系统教程(WSL2 + Ubuntu 20.04 + xlaunch桌面 )

安装 WSL 1 安装 WSL1 (1)启用“适用于 Linux 的 Windows 子系统”可选功能 需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。可以使用命令行的方式,也可以使用图形界面的方式。 图形界面方式 在【设置 -> 更新与安全->…