设计模式-策略模式
应用场景 策略模式与状态模式很像, 都属于行为模式. 从最终呈现的UML类图上来看可能两者没什么太大区别. 区别在于, 状态模式主要目的是让主体可以依据不同的状态确定行为. 比如不同的工具执行不同的操作. 策略模式则主要用来封装算法, 主体状态并没有变化, 但是可以自由组合要执行的行为方式. 举例来说, 编写一个简单的图片文件处理程序, 需要将给定的图片进行压缩, 然后为其添加滤镜....
应用场景 策略模式与状态模式很像, 都属于行为模式. 从最终呈现的UML类图上来看可能两者没什么太大区别. 区别在于, 状态模式主要目的是让主体可以依据不同的状态确定行为. 比如不同的工具执行不同的操作. 策略模式则主要用来封装算法, 主体状态并没有变化, 但是可以自由组合要执行的行为方式. 举例来说, 编写一个简单的图片文件处理程序, 需要将给定的图片进行压缩, 然后为其添加滤镜....
应用场景 当执行同一种操作时基于不同的状态出现不同的效果. 比如在画图软件中, 如果选中了画笔, 按住鼠标在画布上拖动就会绘制线条. 如果选中了选择工具, 按住鼠标在画布上拖动就会出现一个选择框. 对于鼠标的操作行为是相同的, 但是基于选中工具的状态不同, 则会执行不同的操作. 基础实现方式 可以创建一个枚举类, 用来列出所有的工具类型, 然后让画布包含一个枚举成员, 并在操作时...
应用场景 主要应用在类似于撤销操作的应用场景之中. 假设存在一个文本编辑器, 要对其编辑历史进行记录, 以实现撤销操作 如果使用简单的设计方法, 可以让编辑器包含一个历史记录字段, 用以储存上一次的内容. classDiagram note "只能保存一次历史" class Editor{ +String content +String...
设置全局配置 在vscode中打开settings.json, 加入全局配置: { "pylint.args": [ # 通过`--disable`参数标记在全局禁用的规则 "--disable=C0116", # missing-function-docstring / C0116 "--disable=C0114", # mis...
安装Oh-my-zsh 使用zsh作为终端shell程序, 可以通过命令设置: chsh -s /bin/zsh 安装Oh-my-zsh: sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" ...
配置Git Git config 官方多语言文档 git config --global core.editor "code --wait": 指定vscode作为全局编辑器. git config --global diff.tool vscode: 设置通过vscode查看文件变更. git config --global difftool.vscode.cmd "co...
基础命令 cd: 修改文件夹 ls: 列出当前文件夹下的内容, 可以使用参数: -a: 显示隐藏文件 -l: 显示详情 -1: 每行一个 pwd: 显示当前文件夹完整路径 cp: 复制文件, cp src dist mv: 移动或重命名文件 rm: 删除文件或文件夹, 常用参数 -...
安装docker Docker文档 文档链接进入下载页面, 选择对应的系统下载安装即可. 比较难受的是docker注册网站需要科学上网才能访问. 安装并运行后, 终端执行以下命令查看是否成功: docker version 理解Docker的IMAGE和CONTAINER Image: 包含了一个简化的操作系统, 比如ubuntu, 第三方库, 项目文件 环境变量等内容...
MySQL 基本语法 SELECT SELECT * FROM MOCK_DATA WHERE points>100 ORDER BY points desc LIMIT 100 JOIN INNER JOIN 根据两个表的关联字段查询, 得到一张包含全部字段的表, 也可以指定要查询的字段. INNER 关键字可以省略, 直接写成JOIN 连接多个表使用多个 join .....
通过ProdcutViewSet已经实现了对产品模型的增删改查操作, 但是在查询时的结果集则是数据库中的全部数据. 现在的ProdcutViewSet代码如下: class ProductViewSet(ModelViewSet): queryset = Product.objects.all() serializer_class = ProductSerializer ...