策略模式--GOF的23个之一

本文介绍策略模式的概念及其在解决代码重复、行为变化等问题的应用。通过组合而非继承的方式,使得算法能够独立于客户端而自由变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

策略模式--GOF的23个之一

 

前言:推荐《Head First 设计模式》,是它带给我设计模式,本文章均归纳来自此书,仅为学习使用,不涉及商务利益。『策略模式』定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。


 

 

问题:

1、     代码在多个子类中重复。

2、     运行时的行为不容易改变。

3、     很难知道所有鸭子的全部行为。

4、     改变会牵一发动全身,造成其他鸭子不想要的改变。

5、     并非所有子类都有一个行为(并非所有鸭子都能飞)。

6、     开Flyalbe接口,造成代码无法复用。

7、     子类对同一接口有不同的实现方式(鸭子飞行的动作可能多种变化)。

 

 

层次一:找出应用中可能需要变化之处,把它们独立出来, 不要和那些不需要变化的代码混在一起。

 

层次二:多用组合,少用继承。

当你将两个类结合起来使用,如同本例一般,这就是组合(co m p o s i t i o n)。这种作法和『继承』不同的地方在于,鸭子的行为不是继承而来,而是和适当的行为对象『组合』而来。

 

 

『我们使用策略模式实现鸭子的各种行为。』这句话也就是告诉我们,鸭子的行为被封装进入一组类中,可以被轻易地扩充与改变。如果有需要,甚至在运行时也可以改变行为。




 

如有好的建议,可留言或发至笔者邮箱:fzb_xxzy@163.com

 

 

YOLO (You Only Look Once) 是一种实时目标检测算法,它的训练过程通常在深度学习框架中完成,如TensorFlow或PyTorch,而不是直接在终端命令行中。然而,为了简化演示,我们可以在终端通过命令行安装必要的工具包并运行基本的训练脚本。这是一个简化的Python脚本示例,假设已经安装了Darknet库(包含YOLO的核心),以及CUDAcuDNN支持: ```bash # 首先,确保已经安装了Darknet(你可以从官网下载预编译的darknet) cd /path/to/darknet ./build darknet # 安装其他依赖(如Python接口pydarknet) pip install pydarknet # 下载预训练权重YOLO配置文件(这里假设是yolov4的cfg文件) wget https://github.com/AlexeyAB/darknet/releases/download/yolov4/yolov4.cfg wget https://drive.google.com/uc?id=0B_MFvH8CSXXNVlJxZ3lUcDhBSFE -O yolov4.weights # 使用YOLO训练脚本来开始训练 python -m pydarknet train \ --config=yolov4.cfg \ --weights=yolov4.weights \ --datacfg=data/coco.data \ --epochs=500 \ --batchsize=64 \ --learning-rate=0.001 ``` 在这个例子中: - `train`是Darknet自带的训练脚本。 - `yolov4.cfg`是模型的配置文件。 - `yolov4.weights`是预训练权重。 - `data/coco.data`是数据集配置文件,用于指定训练的数据源类别。 注意:这个是基础示例,实际训练可能需要调整参数、数据预处理更复杂的配置。在生产环境中,建议使用完整的深度学习框架环境,并通过脚本或命令行工具管理训练过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值