1、Factory和MVC
这两个就不说了。
2、Composite
class IHypothesis
{
public:
/**
* 清空分类器
*/
virtual void clear() = 0 ;
/**
* 从文件中加载分类器
*/
virtual bool Load( char* filename ) = 0;
/**
* 分类器保存到文件中
*/
virtual bool Hibernate( char* filaneme ) = 0;
/**
* 对样本进行决策:输入为样本特征
*/
virtual bool Decide( KxFeature &feature, double &confidence) const = 0;
/**
* 对样本进行决策:输入为图像特征方法句柄
*/
virtual bool Decide( ImageProps &props, double &confidence ) const = 0;
/**
* 对样本进行决策:输入为图像数据
*/
virtual bool Decide( KxImage &ImageBlock, double &confidence ) const = 0;
};
// AdaBoost
class IAdaBoostHypothesis:public IHypothesis
{
} // 单个的 AdaBoost 分类器
// 级联 AdaBoost 分类器
class ICascadeAdaBoostClassifier:public IHypothesis
{
// vector<IAdaBoostHypothesis> _cascadeClassfier;
} // 多个 AdaBoost 分类器
3、Facade
所有需要显示效果的功能都要与IDispTargetResultTool打交道,通过统一的disp接口对图像进行显示。
向下屏蔽细节。感觉和 Proxy 也有点像。
/************************************************************************/
/* 显示图像效果工具类 */
/************************************************************************/
void IDispTargetResultTool::disp( CxImage &image, vector<labArea> labAreas, RGBQUAD color, int
methodIndex )
{
IDispTargetResult *dispTool=NULL;
switch( methodIndex ) {
case DispRectLine:
dispTool = new IDispTargetRectLine();
break;
case DispTargetColor:
dispTool = new IDispTargetColor();
break;
case DispBgColor:
dispTool = new IDispBgColor();
break;
default:
dispTool = new IDispTargetRectLine();
break;
}
dispTool->disp( image,labAreas,color );
delete dispTool;
}
4、Decorator
滑动窗口识别的时候,识别完成后,可能需要进行阈值分割,也可能无需阈值分割。对滑动识别过程与阈值分割过程这两者进行分离。
类似的还有,基于窗口合并的识别中,可能需要进行第二次的区域识别,也可能无需第二次的区域识别,因此也需要将窗口识别与区域识别分离开。
感觉代码并非按照 Decorator ,仅仅只是思想有些类似。
分享到:
相关推荐
学习js设计模式的例子,用到了命令模式、修装模式
笔者近期做的一个项目用到了Activity的启动模式,也算是第一次深刻地领会到了其强大与方便。在此也是将自己所得与大家分享,自己写了一个比较简易的demo,便于让大家理解。 此篇博客意在让对启动模式不了解的开发者...
这个“IOS 工厂方法模式代码Demo”是为开发者提供了一个直观的例子,帮助他们理解并应用这种模式。让我们深入探讨一下工厂方法模式以及如何在iOS项目中实现它。 工厂方法模式的核心思想是定义一个创建对象的接口,...
本Demo主要展示了两种实现夜间模式切换,并带有渐变过渡效果的方法。以下是这两种方法的详细解释: 1. **静态资源切换**: Android系统允许开发者通过切换不同的主题资源来实现夜间模式。这通常涉及到在`res/...
尽管JSONModel MVC demo可能并未采用MVVM,但了解这种模式可以帮助你理解其他项目中可能用到的技术。 在JModelDemo这个项目中,你可以看到如何设置和使用JSONModel来创建模型对象,以及如何在ViewController中处理...
本Demo旨在帮助开发者理解并掌握MVP模式在实际项目中的应用。 首先,我们来详细了解一下MVP模式的三个主要组件: 1. **Model**(模型层):这一层主要负责数据的获取和处理,通常包含业务逻辑和数据访问。它可以是...
6. **地理编码与反编码**:DEMO可能包含了将经纬度转换为地址(地理编码)和将地址转换为经纬度(反地理编码)的功能,这通常需要用到`Geocoder`类。 7. **地图集成**:为了展示位置,DEMO可能集成了Google Maps ...
这个名为"情景模式自定义切换Demo源码"的项目,显然提供了实现这一功能的示例代码。通过查看链接(http://blog.csdn.net/yb1239958836/article/details/8195205,虽然这个链接可能现在已经失效,但通常这种链接会...
在编程实现FTP应用程序时,通常会用到特定的库或API,例如Python中的`ftplib`模块,Java的`java.net.Socket`和`java.net.FTPSClient`,或者C#的`System.Net.FtpClient`。这些库提供了方便的接口来执行FTP命令,如...
一个项目的通常都是从Demo开始,不断为项目添加新的功能以及重构,也许刚开始的时候代码显得非常凌乱,毫无设计可言。但是随着项目的迭代,往往需要将很多相同功能的代码抽取出来,这也是设计模式的开始。熟练运用...
关于Spring,也是我们常用的IOC在java下一种实现了,不过相对.net下IOC的实现,Spring相对更强大(反正之前在.Net下,我是习惯了啥都去配置,在Java下才知道有一种Scan模式,本Demo中也用到了,不知道的可以查查...
在这个名为"IOS MVVM小Demo"的项目中,我们可以深入探讨MVVM模式在iOS应用开发中的应用。 **MVVM模式概述** MVVM模式由三个主要部分组成:模型(Model)、视图(View)和视图模型(ViewModel)。模型负责数据的存储...
8. **设计模式**:高级DEMO可能会用到一些经典的设计模式,如单例、工厂、观察者等,来提高代码的可维护性和复用性。 9. **JDBC数据库操作**:如果DEMO与数据库交互,那么它可能演示了如何使用Java连接和操作数据库...
5. **地理位置**:应用可能需要获取用户的当前位置,这需要用到Android的Location API,结合Google Play服务的FusedLocationProviderClient。用户也可以手动输入城市名,此时需要一个搜索功能,可能涉及...
6. **数据存储**:如果DEMO希望记住用户设置的布局状态(例如,浏览器刷新后保持用户调整的大小),可能还会用到本地存储(`localStorage`)或者cookie,将布局信息保存在客户端。 7. **兼容性测试**:由于不同的...
- 在实现旋转效果时,通常会用到模型视图投影矩阵。这个矩阵结合了模型矩阵(定义物体自身坐标系到世界坐标系的变换)、视图矩阵(定义观察者的位置和方向)和投影矩阵(定义视口空间到裁剪空间的变换),用于一次...
【标题】"MENU_DEMO.rar_DEMO"是一个与编程相关的压缩包,主要展示了在TurboC2.0环境下实现的文本模式下菜单功能的演示。这个DEMO旨在帮助学习者理解如何在没有图形用户界面(GUI)的情况下,利用C语言在控制台创建...
- MVC是一种常见的软件设计模式,常用于Web应用。在这个Java网页Demo中,"模型"负责处理数据和业务逻辑,"视图"负责展示用户界面,"控制器"则协调模型和视图的交互。 3. **数据库交互** - 文件`db_stuman.sql`...
描述中提到"DfuSe_Demo_V3.0.6 这玩意项目中用到了。windows10 中可以用",意味着该软件在Windows 10操作系统环境下可以正常运行,并且已经在某个实际项目中被应用。这通常意味着开发人员或者用户在Windows环境下...
房间信息(如房主、房间ID、游戏模式等)会被存储在数据库或者内存中,以便后续的查询和匹配。 2. **玩家匹配**:新进玩家可以选择自动匹配或者指定房间号加入。服务器会根据预设的匹配规则(如按等级、胜率、地理...