Head First 设计模式 Design Pattern 附录 Bridge, Builder, Chain, Flyweight, Interpreter

2026.06.23+逻辑填空3+郭熙(笔记)(郭熙言语高分“十二计”).pdf 立即下载

附录A: 余下的模式

1桥接 Bridge 不只改变实现, 也改变抽象

>优点 将实现解耦 让其和UI之间不再绑定; 抽象和实现可以独立扩展互不影响; 对于"具体的抽象类"所做的改变不影响客户

>用途和缺点 适合需要跨越多个平台的图形和窗口系统上; 当需要用不同的方式改变接口和实现时; 增加了复杂度;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//***********Bridge***********
class ITVImp
{
public:
    virtual void onImp() = 0;
};
                                                                          
class IRemoteControl
{
public:
    virtual void on() = 0;
    virtual void SetImp(ITVImp* pImp) { mpImp = pImp; }
    virtual ITVImp* GetImp() { return mpImp;}
private:
    ITVImp* mpImp;
};
                                                                      
class RCAImp : public ITVImp
{
public:
    virtual void onImp();
};
                                                                      
class ConcreteRemoteControl : public IRemoteControl
{
public:
    ConcreteRemoteControl();
    virtual void on();
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void RCAImp::onImp()
{
    cout << "RCAImp" << endl;
}
                                                                     
ConcreteRemoteControl::ConcreteRemoteControl()
{
    SetImp(new RCAImp());
}
                                                                     
void ConcreteRemoteControl::on()
{
    ((RCAImp*)GetImp())->onImp();
}
                                                                     
        //Bridge
        ConcreteRemoteControl* control = new ConcreteRemoteControl();
        control->on();

PIMPL模式 Private Class Data Pattern 隐藏类的内部实现和数据 用户只能看到public API

2生成器 Builder 封装一个产品的构造过程 允许按步骤构造

>优点 将复杂对象的创建过程封装起来; 允许对象通过多个步骤创建 可以改变过程(工厂模式只有一个步骤); 向客户隐藏产品内部的表现; 产品的表现可替换 客户只看到抽象的接口

>用途和缺点 创建组合结构; 与工厂模式相比 采用生成器创建对象的客户需要具备更多领域知识;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//***********Builder***********
class Result
{
public:
    void show();
    string sPartA;
    string sPartB;
};
                                                  
class IBuilder
{
public:
    virtual void buildA(string a) = 0;
    virtual void buildB(string b) = 0; //...
    virtual Result* getResult() = 0;
};
                                                  
class ResBuilder : public IBuilder
{
public:
    ResBuilder();
    virtual void buildA(string a);
    virtual void buildB(string b);
    virtual Result* getResult() { return mpRes;};
private:
    Result* mpRes;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
ResBuilder::ResBuilder()
{
    mpRes = new Result();
}
                                                  
void ResBuilder::buildA(string a)
{
    mpRes->sPartA = a;
}
                                                  
void ResBuilder::buildB(string b)
{
    mpRes->sPartB = b;
}
                                                  
void Result::show()
{
    cout << sPartA + sPartB << endl;
}
                                                  
        //Builder
        ResBuilder* builder = new ResBuilder();
        builder->buildA("Build part A");
        builder->buildB("Build part B");
        Result* res = builder->getResult();
        res->show();


3责任链 Chain of Responsibility 让一个以上的对象处理某个请求的时候

>优点 将请求的发送者和接收者解耦; 简化对象 使其不需要知道链的结构; 通过改变链内的成员或调动次序 允许动态新增或者删除责任

>用途和缺点 经常使用在窗口系统中 处理鼠标和键盘事件; 不保证请求一定会被执行; 不容易观察运行时的特征, 不易查错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//***********ChainOR***********
class IHandler;
typedef vector <IHandler*> HANDLERVEC;
class IHandler
{
public:
    IHandler(int iType) : miType(iType) {};
    virtual void handleRequest() = 0;
    virtual int getType() {return miType;}
private:
    int miType;
};
                                      
class ConcreteHandler : public IHandler
{
public:
    ConcreteHandler(int iType);
    virtual void handleRequest();
private:
    HANDLERVEC mHandlerVec;
};
                                      
class HandlerLev1 : public IHandler
{
public:
    HandlerLev1(int iType) : IHandler(iType) {};
    virtual void handleRequest() {cout << "Handle Level1" << endl;};
};
                                      
class HandlerLev2 : public IHandler
{
public:
    HandlerLev2(int iType) : IHandler(iType) {};
    virtual void handleRequest() {cout << "Handle Level2" << endl;};
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ConcreteHandler::ConcreteHandler(int iType) : IHandler(iType)
{
    HandlerLev1* lev1 =  new HandlerLev1(1);
    HandlerLev2* lev2 =  new HandlerLev2(2);
    mHandlerVec.push_back(lev1);
    mHandlerVec.push_back(lev2);
}
                                     
void ConcreteHandler::handleRequest()
{
    HANDLERVEC::iterator iter = mHandlerVec.begin();
    for (; iter != mHandlerVec.end(); iter++)
    {
        IHandler* handler = *iter;
        if (handler != NULL && getType() == handler->getType())
        {
            handler->handleRequest();
            return;
        }
    }
}
        //ChainOR
        ConcreteHandler* handler = new ConcreteHandler(1);
        handler->handleRequest();


4蝇量 Flyweight 让某个类的一个实例能用来提供很多"虚拟实例" 

>优点 减少运行时对象实例的个数 节省内存; 将许多"虚拟对象"的状态集中管理

>用途和缺点 当类有许多的实例 这些实例能被同一个方法控制的时候; 单个的逻辑实例将无法拥有独立而不同的行为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//***********Flyweight***********
class Tree
{
public:
    Tree(int i);
    virtual void display(int x, int y);
    virtual int getAge() { return miAge;}
private:
    int miAge;
};
                         
struct TreeData
{
    int xCoord;
    int yCoord;
    int age;
};
                         
typedef map <int, Tree*> TREEMAP;
class TreeManager
{
public:
    void displayTrees(int num, TreeData data[]);
    Tree* getTree(int age);
private:
    TREEMAP treeMap;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Tree::Tree(int i) : miAge(i) {}
                        
void Tree::display(int x, int y)
{
    cout<< "Coord"<< x << ","<< y <<
    "Age"<<miAge<<endl;
}
                        
void TreeManager::displayTrees(int num, TreeData data[])
{
    for(int i = 0; i < num; i++)
    {
        TreeData treeData = data[i];
        getTree(treeData.age)->display(treeData.xCoord, treeData.yCoord);
    }
}
                        
Tree* TreeManager::getTree(int age)
{
    Tree* tree;
    TREEMAP::iterator iter = treeMap.find(age);
    if (iter == treeMap.end()) // Save the memeory
    {
        tree = new Tree(age);
        cout<<"new a tree"<<endl;
        treeMap[age] = tree;
    }
    else
        tree = treeMap[age];
                            
    return tree;
}
        //Flyweight
        TreeData treeData[3] =
        {
            {10, 20, 3},
            {20, 10, 5},
            {30, 30, 3}
        };
        TreeManager treeManager;
        treeManager.displayTrees(3, treeData);


5解释器 Interpreter 为语言创建解释器

>优点 将每一个语法规则表示成一个类; 语法由许多类表示 容易改变或扩展语言; 通过在类结构中加入新的方法 可以在解释的同时增加新的行为 例如格式美化或程序验证

>用途和缺点 需要实现一个简单的语言时; 有一个简单的语法 简单比效率更重要时; 处理脚本语言和编程语言; 当语法规则数目过大时 模式将变得非常繁复 这种情况下适合解析器/编译器


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//***********Interpreter***********
class Context
{
public:
    Context(string s, int d) : statement(s), data(d) {};
    string getState() { return statement;}
    int getData() { return data;}
private:
    string statement;
    int data;
};
             
class IExpression
{
public:
    virtual void Interpreter(Context context) = 0;
};
             
class Expression : public IExpression
{
public:
    void Interpreter(Context context);
    void parseState(string);
    void parseData(int);
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Expression::Interpreter(Context context)
{
    parseState(context.getState());
    parseData(context.getData());
}
            
void Expression::parseState(string s)
{
    cout << "string: " << s << endl;
}
            
void Expression::parseData(int d)
{
    cout << "data: " << d << endl;
}
        //Interpreter
        Context context("test", 1);
        Expression expression;
        expression.Interpreter(context);

AltiumDesigner.zip 立即下载

相关推荐

YOLO26算法日历数字识别+训练好的模型+102张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[数字(number)] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 97 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9156** mAP50-95 | 0.7374 Precision | 0.8626 Recall | 0.8381 train/box_loss | 0.8790 train/cls_loss | 0.7499 val/box_loss | 0.7874 val/cls_loss | 0.6025 【训练过程分析】 训练开始后,我注意到前几轮的 loss 下降特别快,这让我有点兴奋,但随着训练的深入,loss 的降幅变得不那么明显了。在训练的第 30 轮左右,val_loss 开始趋于平稳,这让我稍微放心了一些,但同时也感觉压力倍增,因为一旦训练过早平稳,就容易陷入过拟合的泥沼。经过 97 轮的磨炼,最终 mAP50 达到了 0.9156,这让我松了一口气。不过,mAP50-95 仅有 0.7374,和 mAP50 之间有明显的差距,说明模型在低置信度的检测上还需要优化。从 loss 曲线来看,训练过程总体上比较平稳,没有明显的过拟合迹象,但也让人觉得有些枯燥。我心想,要是能早点找到一个陡峭上升的训练曲线该有多好,这样至少能让人心态更积极一些。 随着训练进行到后半段,模型开始逐渐收敛,但这个过程并不是一帆风顺的。在训... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

设计模式-建造者模式(Builder)2种实现方式(经典Builder模式、链式Builder模式)

目录 1 Builder模式 2 经典Builder模式 2.1 抽象建造者角色(Builder) 2.2 具体建造者(ConcreteBuilder) 2.3 指导者(Director) 2.4 产品角色(Product) 2.5 调试代码 3 链式Builder模式 3.1 产品角色(Product) 3.2 调试代码 注: 1 Builder模式 Buidler模式主要分为两种:1、经典Builder模式;2、链式变形Builder模式。 ...

旭东怪的博客 1328

【无人机自动降落】基于标记定位与下降速度约束的MATLAB仿真:感知-规划-控制闭环系统设计 MATLAB 无人机自动降落仿真|标记定位与下降速度约束

内容概要:本文档详细介绍了基于MATLAB R2025b的无人机自动降落仿真系统,涵盖从环境建模、标记定位、最优路线规划到下降速度约束控制的全流程。系统通过构建包含障碍物、风险和视觉质量的栅格地图,采用代价加权A*算法实现多因素综合评估的最优路径规划,并结合标记识别置信度、水平误差和环境风险动态调整下降速度,确保降落过程的安全性与稳定性。项目还设计了完整的闭环控制架构、状态机逻辑和可量化的仿真验证体系,支持GUI交互界面与多场景测试,适用于城市物流、电力巡检、应急救援等多种应用场景。 适合人群:具备MATLAB编程基础,从事无人机控制、自动驾驶或智能系统开发的科研人员与工程师。 使用场景及目标:①研究复杂环境下无人机自动降落的感知-规划-控制一体化方案;②验证基于视觉标记的定位可靠性与下降速度自适应控制策略;③开展多因素路径规划算法(如改进A*)的仿真实验与性能评估。 阅读建议:建议结合提供的完整代码与GUI界面进行交互式仿真,重点关注状态机切换逻辑、控制约束机制与各模块间的数据流关系,并通过调整参数观察系统在不同风险、遮挡和噪声条件下的响应特性,以深入理解自动降落系统的鲁棒性设计。

(建造者模式)链式编程之 @Builder 和 @Accessors 学习

建造者模式:建造者模式又叫创建者模式,是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。 关于 Build的使用可以参考:一篇文章带你使用 Builder 模式实现构建器 文章目录一、@Accessors二、@Builder 和 @Accessors 区别 一、@Accessors 示例: @Data @Accessors(chain = true) p

南淮北安的博客 1427

风储VSG-基于虚拟同步发电机的风储并网系统Simulink仿真

内容概要:本文介绍了“Plecs全桥LLC谐振变换器仿真模型”这一技术资源,聚焦于隔离型全桥LLC谐振变换器的建模、仿真与参数设计,涵盖其在电力电子系统中的关键应用,如软启动、闭环控制、变频控制及效率优化等。该模型支持对LLC变换器在不同工作模式下的动态响应与性能表现进行深入研究,适用于探究谐振拓扑结构、磁性元件设计、谐振参数匹配以及先进控制策略的科研与工程实践。同时,文档配套提供了仿真模型、设计报告与计算书等完整资料,强化了其实用性与教学价值。; 适合人群:具备电力电子、自动化或电气工程等相关专业背景,从事电力电子变换器研发、系统仿真与控制算法设计的科研人员、工程师及研究生。; 使用场景及目标:①用于全桥LLC谐振变换器的建模、仿真与动态性能分析;②支持对软启动过程、闭环稳压控制、变频调谐及效率优化等核心技术的研究与教学;③为电力电子电源系统的工程设计、参数优化与控制策略验证提供高精度仿真平台。; 阅读建议:建议结合Plecs或Simulink等仿真工具进行动手实践,重点理解电路拓扑构建、谐振参数计算、控制器设计与系统稳定性分析,并配合文档中的设计报告与计算书,系统掌握从理论到仿真的完整流程。

国央企创新负责人如何通过平台实现科技创新资源的系统集成与高效配置?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

【HeadFirst 设计模式学习笔记】19 桥接(Bridge)模式拾零

作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.概述 该模式也是Head First中未收录的,其主要用于分离接口与实现,常应用在你不希望将实现和抽象永久绑定的时候。其实质在于提供一个对抽象接口的抽象实现,而抽象实现中又包含一个具体实现接口(叫做“实现者”)的引用,通过这个引用给抽象实现提供能力。 2.实例 假设我们要创建一个具有持久化能...

weixin_30496751的博客 160

独立储能的现货电能量与调频辅助服务市场出清协调机制(Matlab代码实现)

内容概要:本文介绍了“Plecs全桥LLC谐振变换器仿真模型”这一技术资源,聚焦于全桥LLC谐振变换器在电力电子系统中的建模与仿真研究。该资源提供了基于Plecs平台的高精度仿真模型,完整呈现了变换器的主电路拓扑、谐振参数设计、软开关实现机制及变频控制策略,能够有效支持对系统效率、动态响应与稳态性能的深入分析。模型充分体现了LLC谐振变换器在实现零电压开关(ZVS)、降低开关损耗和提升能量转换效率方面的优势,适用于新能源发电、储能系统及高效率电源设计等应用场景。; 适合人群:具备电力电子、自动控制及电路理论基础知识,从事电力电子变换器设计、新能源系统开发或相关领域研究的研究生、高校教师及工程技术人员。; 使用场景及目标:①用于全桥LLC谐振变换器的工作原理教学与参数设计实践;②支撑软开关特性、变频控制策略、效率优化等关键技术的仿真验证与性能评估;③作为科研项目、课程设计或毕业设计中电力电子系统仿真的核心参考模型,促进理论与工程实践的结合。; 阅读建议:建议使用者在掌握LLC谐振变换器基本工作原理的基础上,结合相关电力电子教材与Plecs软件操作指南,通过调整谐振元件参数、负载条件及控制策略进行多工况仿真,深入理解其工作机理与优化方法,并结合实验数据对比验证仿真结果的准确性。

Head First 设计模式 Design Pattern 7-8 Adapter & Facade, Template Method

Section 7 适配器模式和外观模式 Adapter & Facade >客户使用适配器 Client - Request -> Adapter -> TranslateRequest - Adaptee  客户通过目标接口调用适配器的方法发出请求; 适配器使用被适配者的接口把请求转换成被适配者的一个或多个调用接口; 客户收到调用结果, 并不知道是适配器在转化请求 >双向

Fix it 1684

LLC谐振变换器开环+闭环软启动仿真设计(Simulink仿真实现)

内容概要:本文围绕LLC谐振变换器的开环与闭环软启动过程展开系统性仿真研究,重点基于Simulink平台构建隔离型全桥LLC谐振变换器的完整仿真模型,涵盖其工作原理分析、关键参数设计、变频与移相混合控制策略实现、软启动过程建模及动态响应优化。内容深入探讨了开环启动中存在的冲击电流问题,对比闭环控制在抑制浪涌、提升系统稳定性与效率方面的优势,并通过仿真验证软启动过程中电压、电流的平滑过渡特性,帮助读者掌握高频高效DC-DC变换器的设计要点与仿真调试方法。; 适合人群:具备电力电子技术、自动控制理论及电路分析基础,从事开关电源、新能源变换系统、电力传动等领域研究的研究生、工程师及科研人员;熟悉Simulink仿真环境者更佳。; 使用场景及目标:①掌握LLC谐振变换器主电路建模与谐振参数设计方法;②理解开环与闭环控制对软启动性能的影响机制;③实现软启动过程中冲击电流的有效抑制与系统平稳启动的仿真验证;④为高效率电源系统的工程化设计与优化提供可靠的仿真依据和技术支撑。; 阅读建议:建议结合文中提供的仿真模型、参数计算书及参考文献进行同步实践,亲手搭建Simulink模型,逐步调整控制参数并观察动态响应,深入理解LLC谐振变换器在不同工况下的运行特性与控制逻辑,切实提升理论分析与工程仿真相结合的能力。

test111233333333333333

test111233333333333333

Head First 设计模式 Design Pattern 1-2 Strategy, Observer

Section 1 策略模式 Strategy 模式:经验复用, 软件开发是在不断调整改变的 设计原则 找出应用中需要变化的部分, 把他们从不需要变化的代码中独立(封装)出来;  >分开变化和不变的部分, 代码变化引起的影响小, 系统有弹性 设计原则 针对接口编程, 不是针对实现编程 >利用接口表示行为, 针对超类型(Supertype)编程, 利用多态 设计原则

Fix it 1498

Zemax操作33--5倍激光扩束器

5倍扩束

lzy750750的博客 2933

Head First 设计模式 Design Pattern 附录 Mediator Memeto Prototype Visitor

附录A: 余下的模式 6中介者 Mediator 集中相关对象之间复杂的沟通和控制方式 每个对象都会在自己的状态改变时告诉中介者; 每个对象都会对中介者发出的请求作出回应; 对象之间解耦; >优点 对象的彼此解耦 增加对象的复用性; 将控制逻辑集中 简化系统维护; 让对象之间传递的信息变的简单轻量 >用途和缺点 用来协调相关的GUI组件; 如果设计不当 中介者对象本身会变得过于复杂

Fix it 1407

SAP物料分类账实战:从配置到月结的关键步骤(基于S/4HANA1909)

本文详细解析了在SAP S/4HANA 1909系统中,物料分类账从基础配置到月结操作的全流程。作为成本核算的核心,物料分类账通过多级价格确定实现实际成本核算,关键步骤包括激活物料分类账、配置自动过账科目(OBYC)、运行CKMLCP进行差异分摊与结算。文章旨在帮助财务与成本会计人员确保成本差异的准确归集与分摊,顺利完成月结。

weixin_28314575的博客 195

分享一些基于微信小程序开发的小游戏源码

小游戏小程序是运行在微信生态系统(或其他支持小程序的平台)中的轻量级应用程序,专为休闲游戏体验而设计的小程序子类别,小游戏小程序通常体积较小,加载速度快,用户无需等待长时间即可开始游戏。用户无需下载或安装单独的游戏应用程序,即可通过小程序入口直接进入游戏,同时小游戏小程序通常包含排行榜、分享功能等社交元素,可以增强游戏体验并促进用户参与。game.js:游戏页面的逻辑文件,包含页面数据、生命周期函数、事件处理函数等。game.wxml:游戏页面的结构文件,定义了页面的布局和组件。

xinshangdian的博客 6232

Head First 设计模式 Design Pattern 3-4 Decorator, Factory

Section 3 装饰者模式 Decorator  开放-关闭原则, 只在必须的地方使用开放-关闭原则, 否则增加复杂度, 代码阅读性变差 设计原则 类应该对扩展开放, 对修改关闭 >装饰者和被装饰者对象有相同的超类型 >可以用一个或者多个装饰者包装一个对象 >可以用被装饰过的对象代替原始对象 >装饰者可以在所委托被装饰者的行为之前/后加上自己的行为 >运行时

Fix it 1265

ZYNQ出现问题及解决办法汇总(一直更新)

问题目录使用软件及开发板版本一,vitis在build project时卡住。二,Could not find FPGA device on the board for connection 'Local'三,FPGA configuration failed:DONE PIN is not high四,Could not find ARM device on the board for connection 'Local' 使用软件及开发板版本 开发板:MZ7XA-7020 软件:vitis2020.2(

qq_45057368的博客 1万+

Head First 设计模式 Design Pattern 5-6 Singleton, Command

Section 5 单件模式 Singleton 创建独一无二的, 只能有一个实例的对象. 延迟实例化 Lazy Instantiaze 单件模式 确保一个类只有一个实例, 并提供一个全局访问点 处理多线程 >Java 利用同步, 缺点是降低性能;    >Java 利用急切 Eagerly方式创建单件, JVM保证在任何线程访问instance之前先

Fix it 1196

基于物联网技术智慧园林绿化养护管理信息平台

近几年来,随着经济不断的发展,城市面积不断的扩大,城市管理中的园林绿化工作也在这种趋势下不断的发生着深刻改变。管养企业是否按制定的管养计划严格执行?绿化事件整改是否及时到位?绿地面积是否在稳步增长?管养的效果如何?如何客观评价管养企业的管养工作?这些都是我们各级管理者需要面对的问题。   智慧园林绿化养护管理信息平台的开发思路以“考核”为核心,整个信息平台体现出“新、快、高、全、享”五个特点。   智慧园林绿化养护管理信息平台的整个开发理念为:依托五大技术手段(全球卫星定位系统技术、地理信...

Cesium的博客QQ2252224326 2459

初学者入门机器学习 (ML)的推荐教程

了解基本的机器学习概念并不难。有大量免费的在线博客文章、视频和编码教程可以引导您了解基础知识——从介绍性内容到常见应用程序,再到算法和应用技能。这篇文章总结了一些用于介绍 ML 的最佳免费选项。它按逻辑顺序排列,每个概念都建立在上一个概念的基础上。

u010542847的博客 4621

Head First 设计模式 Design Pattern 11-13 Proxy, Combining, For Real

Section 11 代理模式 Proxy 控制和管理访问  代理模式 为另一个对象提供一个替身或占位符以控制对这个对象的访问. 使用代理模式创建代表representative对象, 让代表对象控制某对象的访问, 被代理的对象可以是远程的对象, 创建开销大的对象或需要安全控制的对象. >远程代理Remote Proxy  隐藏远程细节, 调用代理的方法,

Fix it 1110

YOLOv13结合Sobel边缘检测算子,实现EIEM(Edge Information Enhancement Module,边缘信息增强模块),强化空间特征提取

EIEM模块通过巧妙地结合Sobel边缘检测算子和现代卷积网络架构,实现了显式边缘信息增强的创新设计。这种方法不仅提高了网络对边缘特征的敏感性,还保持了良好的计算效率和模块化特性。 从技术实现角度看,EIEM展示了如何将经典计算机视觉算法无缝集成到深度学习框架中,为构建更强大、更可解释的视觉模型提供了新的思路。随着对边缘信息重要性认识的不断深入,以及对网络可解释性需求的增长,EIEM这样的显式特征增强模块将在未来的计算机视觉研究中发挥越来越重要的作用。

FJN110的博客 907

Head First 设计模式 Design Pattern 9-10 Iterator and Composite, State

Section 9 迭代器与组合模式 Iterator and Composite 对象超集合 super collection 聚合 aggregate >注意remove()在多线程中的状况   迭代器模式 提供一种方法顺序访问一个聚合对象中的各个元素, 不暴露其内部的表示. >内部迭代器, 外部迭代器, 迭代器的数据结构可以是有序的, 无序的, 重复的. 设计原则

Fix it 1107

基础入门篇 | YOLOv8 项目【训练】【验证】【推理】最简单教程 | YOLOv8必看 | 最新更新,直接打印 FPS,mAP50,75,95

三个文件搞定YOLOv8【训练】【验证】【推理】🚀🚀🚀

Coding... 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: Head First 设计模式 Design Pattern 11-13 Proxy, Combining, For Real
下一篇: Head First 设计模式 Design Pattern 附录 Mediator Memeto Prototype Visitor
罗伊yc
博客等级 码龄22年 23粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值