`
kofsky
  • 浏览: 202727 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

demo里用到的模式

阅读更多

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命令模式+装饰模式小demo

    学习js设计模式的例子,用到了命令模式、修装模式

    android Activity的启动模式 作用简析+demo详解

    笔者近期做的一个项目用到了Activity的启动模式,也算是第一次深刻地领会到了其强大与方便。在此也是将自己所得与大家分享,自己写了一个比较简易的demo,便于让大家理解。 此篇博客意在让对启动模式不了解的开发者...

    IOS 工厂方法模式代码Demo

    这个“IOS 工厂方法模式代码Demo”是为开发者提供了一个直观的例子,帮助他们理解并应用这种模式。让我们深入探讨一下工厂方法模式以及如何在iOS项目中实现它。 工厂方法模式的核心思想是定义一个创建对象的接口,...

    夜间模式 切换 渐变 Demo 两种方式

    本Demo主要展示了两种实现夜间模式切换,并带有渐变过渡效果的方法。以下是这两种方法的详细解释: 1. **静态资源切换**: Android系统允许开发者通过切换不同的主题资源来实现夜间模式。这通常涉及到在`res/...

    JSONModel MVC demo

    尽管JSONModel MVC demo可能并未采用MVVM,但了解这种模式可以帮助你理解其他项目中可能用到的技术。 在JModelDemo这个项目中,你可以看到如何设置和使用JSONModel来创建模型对象,以及如何在ViewController中处理...

    MVP模式写的Demo

    本Demo旨在帮助开发者理解并掌握MVP模式在实际项目中的应用。 首先,我们来详细了解一下MVP模式的三个主要组件: 1. **Model**(模型层):这一层主要负责数据的获取和处理,通常包含业务逻辑和数据访问。它可以是...

    andoid位置定位DEMO

    6. **地理编码与反编码**:DEMO可能包含了将经纬度转换为地址(地理编码)和将地址转换为经纬度(反地理编码)的功能,这通常需要用到`Geocoder`类。 7. **地图集成**:为了展示位置,DEMO可能集成了Google Maps ...

    情景模式自定义切换Demo源码

    这个名为"情景模式自定义切换Demo源码"的项目,显然提供了实现这一功能的示例代码。通过查看链接(http://blog.csdn.net/yb1239958836/article/details/8195205,虽然这个链接可能现在已经失效,但通常这种链接会...

    Ftp应用程序案例DEMO

    在编程实现FTP应用程序时,通常会用到特定的库或API,例如Python中的`ftplib`模块,Java的`java.net.Socket`和`java.net.FTPSClient`,或者C#的`System.Net.FtpClient`。这些库提供了方便的接口来执行FTP命令,如...

    C#项目中常用到的主要设计模式.pdf

    一个项目的通常都是从Demo开始,不断为项目添加新的功能以及重构,也许刚开始的时候代码显得非常凌乱,毫无设计可言。但是随着项目的迭代,往往需要将很多相同功能的代码抽取出来,这也是设计模式的开始。熟练运用...

    Jersey Spring Integration Demo

    关于Spring,也是我们常用的IOC在java下一种实现了,不过相对.net下IOC的实现,Spring相对更强大(反正之前在.Net下,我是习惯了啥都去配置,在Java下才知道有一种Scan模式,本Demo中也用到了,不知道的可以查查...

    IOS MVVM小Demo

    在这个名为"IOS MVVM小Demo"的项目中,我们可以深入探讨MVVM模式在iOS应用开发中的应用。 **MVVM模式概述** MVVM模式由三个主要部分组成:模型(Model)、视图(View)和视图模型(ViewModel)。模型负责数据的存储...

    demo_java_DEMO_

    8. **设计模式**:高级DEMO可能会用到一些经典的设计模式,如单例、工厂、观察者等,来提高代码的可维护性和复用性。 9. **JDBC数据库操作**:如果DEMO与数据库交互,那么它可能演示了如何使用Java连接和操作数据库...

    简单天气预报demo

    5. **地理位置**:应用可能需要获取用户的当前位置,这需要用到Android的Location API,结合Google Play服务的FusedLocationProviderClient。用户也可以手动输入城市名,此时需要一个搜索功能,可能涉及...

    滑动_html_DEMO_

    6. **数据存储**:如果DEMO希望记住用户设置的布局状态(例如,浏览器刷新后保持用户调整的大小),可能还会用到本地存储(`localStorage`)或者cookie,将布局信息保存在客户端。 7. **兼容性测试**:由于不同的...

    openglDemo基本使用Demo

    - 在实现旋转效果时,通常会用到模型视图投影矩阵。这个矩阵结合了模型矩阵(定义物体自身坐标系到世界坐标系的变换)、视图矩阵(定义观察者的位置和方向)和投影矩阵(定义视口空间到裁剪空间的变换),用于一次...

    MENU_DEMO.rar_DEMO

    【标题】"MENU_DEMO.rar_DEMO"是一个与编程相关的压缩包,主要展示了在TurboC2.0环境下实现的文本模式下菜单功能的演示。这个DEMO旨在帮助学习者理解如何在没有图形用户界面(GUI)的情况下,利用C语言在控制台创建...

    一个java网页demo

    - MVC是一种常见的软件设计模式,常用于Web应用。在这个Java网页Demo中,"模型"负责处理数据和业务逻辑,"视图"负责展示用户界面,"控制器"则协调模型和视图的交互。 3. **数据库交互** - 文件`db_stuman.sql`...

    DfuSe_Demo_V3.0.6

    描述中提到"DfuSe_Demo_V3.0.6 这玩意项目中用到了。windows10 中可以用",意味着该软件在Windows 10操作系统环境下可以正常运行,并且已经在某个实际项目中被应用。这通常意味着开发人员或者用户在Windows环境下...

    PHP 游戏房间匹配demo2

    房间信息(如房主、房间ID、游戏模式等)会被存储在数据库或者内存中,以便后续的查询和匹配。 2. **玩家匹配**:新进玩家可以选择自动匹配或者指定房间号加入。服务器会根据预设的匹配规则(如按等级、胜率、地理...

Global site tag (gtag.js) - Google Analytics