RCP与设计

漫谈快速控制原型设计(RCP) 快速控制原型 (RCP) 是一种旨在加快控制策略开发过程的工作流程。该工作流允许您快速执行实验迭代,以识别和解决潜在问题。 通俗地讲,所谓快速原型设计是指在最终产品还没有开发之前,能够基于设计思想,数学,物理学模型,在一台通用的设备上证实算法的正确性,并且能够在实验室完成测试。 俗话说“工欲善其事 必先利其器”。实现快速原型设计需要一整套完整的工具来实现。著名的matlab/simulink 软件就是实现快速控制原型设计的主要工具之一。但是要完成物理现场的实时验证和在线仿真,需要在真实的物理设备上运.. 阅读详情

摘要

  1. 层:向上一层提供接口,调用下一层的方法
  2. 泛型:不要使用下层的类或接口作为泛型,这样做会将下层暴露给上层

本文通过三次设计,逐步深入讨论设计方案。

考虑一个简单的RCP项目(SWT,AWT,WEB同理)

  • 表格数据从一个xml文件中导入(或其他来源)。
  • 可以添加、删除、修改数据
  • 可模糊查询定位到某几条数据
  • 可将上述表格数据写回来源文件(例如xml文件)
  • 点击列名可做排序

 

分析

业务逻辑很简单,实现起来也许有很简便的方法,例如:将xml作为数据源,用delphi之类的开发工具快速画表格,双击x控件产生事件,在事件方法中写代码…..

现在从设计的角度去考虑

 

第一次设计

元数据层

这一个股东类的pojo

 

持久层

  • Read()方法从底层获取数据(读xml文件),得到一个全局map
  • Find()方法查找一条数据
  • Delete()方法删除一条数据
  • Writeback()方法将全局map写回xml文件
  • Update()用于更新一条数据
  • 考虑到以上方法都是对map的操作,所以在抽象类中实现

 

视图层

用于产生table(表头以及数据表体)

注:表现层最外层shell包含"添加"、"删除"、"导入"、"保存"、"搜索"方法,这里省略了这个类的类图

 

为什么要这么设计

  1. 分离3层
  2. 持久层做了抽象,当以后有其他table时,可以继承XmlServiceDefaultImpl以复用
  3. 表现层也抽象出来了一般方法,实现写到抽象函数中

 

上述设计存在的问题

    表体属于"数据",那么表头呢?在StockholderInfoTable类中一个个写太麻烦了

    考虑表现层的"添加"方法,表现层在table中添加了一条数据,表现层不应知道这条数据是什么数据,它直接告诉持久层:"添加一条数据,封装在一个arraylist中"。这个arraylist就是表现层和持久层的数据接口

 

 

第二次设计

    元数据层

  1. 表头信息作为动态数据, 封装在getChineseName中了
  2. 表现层需要的是array,因此这里提供个将数据转换为string[]的toStringArr方法

 

持久层

持久层增加了

  1. queryAsIdArr:arraylist,用来通过id关键字查询得到arr
  2. transFromarrToMap ,表现层提交的arraylist数据转换成map

 

表现层没动

 

改变了什么:

    完善了数据流向

缺陷

  1. "表头信息作为动态数据, 封装在getChineseName中"认真思考一下这个做法,底层应只提供数据,表头属于表现。
  2. 表现层和元数据层之间仍存在耦合

 

改进

    向上一层提供接口,调用下一层的方法。

 

元数据层

再次回到pojo

 

持久层

  1. 增加一个Dynabean类,提供给上层作为接口,所有方法的参数都是这个Dynabean
  2. Dynabean有2个属性,arrattibute1是id的数组,arrattibute2是对应的中文名
  3. 抽象类取消泛型T:这里用泛型只会让顶层知道 元数据层的类型

 

视图层

 

这里使用泛型,因为抽象出来dynabean,initTable(T)、initTableData(T)方法都只与dynabean打交道,省去了很多table的实现方法

用RCP开发一个编辑器实现卡尔曼滤波 用RCP开发一个编辑器实现卡尔曼滤波RCP(Rich Client Product)是基于Eclipse平台的一种桌面端开发技术,Elipse开发工具本身就是在RCP的基础上再加上各种插件所构成的。本文主要分为以下几个部分。 RCP与SWT JFace RCP的开发步骤 RCP实现卡尔曼滤波算法 RCP简介 SWT JFaceRCP是一个基于Eclipse平台技术的应用程序所需要的最小集合,开发者可 阅读详情

相关推荐

开放型RCP设计方案

快速控制原型(RCP - Rapid control prototyping)是一种开发环境,它以有效的方式设计,开发和验证控制器原型。市面上有若干种RCP系统。Matlab/Simulink在这些系统中广泛地被应用。 在工程学院中,控制的课程为学生提供了控制器设计和体验的课程,然而,商用的RCP 系统都是基于昂贵的硬件和软件构建的。大多数硬件基于intel X86 志强处理器和windows 系统。通过PCIe 插入一块或者多块FPGA 扩展板实现。 多...

姚家湾博客 1494

RCP程序UI设计——之首页篇

在我们第一次启动eclipse时,首先呈现在我们眼前的是一个漂亮的欢迎界面,界面中提供了各种功能的快速入口,如帮助,示例程序和进入工作台等等操作,使用起来非常的直观和方便。 其实在我们开发的RCP程序中,一样也可以实现这样的效果,我们可以通过扩展"org.eclipse.ui.intro"这个扩展点来实现,下图是我在一个项目中所实现的界面。 下面就谈谈它的实现的过程。实际上

严军的专栏 2681

Eclipse RCP表单设计与实现

Eclipse RCP(Rich Client Platform)是一个强大的开发平台,专门用于构建具有丰富用户界面的应用程序。它提供了一系列的基础构建块,可以帮助开发者快速开发出专业级的应用程序。ScrolledForm容器是一种在Eclipse RCP应用中常用的布局容器,它在提供常规表单功能的同时,还内置了滚动条的支持。该容器允许开发者在不考虑实际窗口大小的情况下,创建可滚动的表单内容。它由三个主要部分组成:头部、主体和滚动区域。

weixin_42596246的博客 1148

设计RPC接口时,你有考虑过这些吗?

RPC 框架的讨论一直是各个技术交流群中的热点话题,阿里的 dubbo,新浪微博的 motan,谷歌的 grpc,以及不久前蚂蚁金服开源的 sofa,都是比较出名的 RP...

程序猿DD 1833

干扰管理学习日志4-------信道估计方法 LS(最小二乘)、MMSE(最小均方误差)

信道估计,就是从接收数据中将假定的某个信道模型的模型参数估计出来的过程。如果信道是线性的话,那么信道估计就是对系统冲激响应进行估计。需强调的是信道估计是信道对输入信号影响的一种数学表示,而“好”的信道估计则是使得某种估计误差最小化的估计算法。本文主要讲述非盲信道估计中的LS估计和MMSE估计。LS全称为,即估计的信道参数与实际信道参数的差,进行平方求和后得到的误差累积最小。MMSE估计是LS估计的改进,在LS估计的最终结果的基础上乘以加权矩阵,使之与实际信道参数更为接近。

taiyuezyh的博客 1万+

VS2015与QT界面开发中解决‘ui_xxx.h‘文件类名不一致导致的编译错误

本文详细解析了在VS2015与QT界面开发中,因.ui文件顶层部件objectName与生成类名不一致导致'ui_xxx.h'文件出现'不完整的类型'编译错误的根本原因。通过分步排查,指导开发者统一Qt设计师对象名、自动生成文件类名及代码引用名,并提供强制重新编译UI文件、清理中间文件等解决方案,有效解决此类常见编译问题。

weixin_29009339的博客 248

RPC原理分析和架构设计要点

一、基础概念 RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。 RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 RPC。会两方面会直接影响 RPC 的性能,一是传输方式,二是序列化。 但rpc在实际...

sinat_34814635的博客 3159

Excel数据透视表实战:分组折线图制作与动态分析指南

数据可视化是数据分析的关键环节,其核心原理在于将抽象数据转化为直观图形,以揭示趋势、对比差异。在众多图表类型中,折线图因其能清晰展示连续数据随时间或其他序列的变化趋势,而成为趋势分析的利器。其技术价值在于通过视觉编码,将多维数据关系降维呈现,从而辅助决策。在业务分析、运营监控等应用场景中,常需对比不同分组(如产品线、销售区域)在同一时间序列上的表现,这正是分组折线图要解决的核心问题。本文聚焦于利用Excel数据透视表这一强大工具,高效构建动态分组折线图,并深入探讨数据透视表在数据重塑和图表自动化中的实战应用

weixin_29057237的博客 380

RCP程序设计部分源码

最近在学习RCP。看了RCP的程序设计,特把部分源码开放。希望给那些对此有研究的朋友一些作用。有什么建议可以提出来!

小崔的博客 353

PyTorch GPU版本安装避坑指南:解决RuntimeError: No CUDA GPUs are available报错

本文详细解析了PyTorch GPU版本安装过程中常见的`RuntimeError: No CUDA GPUs are available`报错问题,从硬件驱动检查、CUDA Toolkit与cuDNN安装到PyTorch GPU版本的正确配置,提供了全面的避坑指南和实战验证方法,帮助开发者高效搭建深度学习开发环境。

r2s3t4的博客 296

力扣(Leetcode)第1题:两数之和(C语言版本)

题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,2,4], target = 6

qq_39855356的博客 3304

RCP智能车设计

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考。

yechen1的博客 589

硬方案——几种实用的恒流源电路设计方案,敬请收藏(运放、三极管在手,让你玩出多种花样)

0 引言 我们在信号测量、供电等应用场景时常会涉及到使用恒流源,以前觉得恒流源挺神奇的,研究了下实现方案,其实也没有多么高深(这里讨论的仅限于用在信号测量中的小电流恒流源设计),这里给出几个实用的恒流源电路设计方案。 1 恒流源电路设计 (1)使用三极管搭建的恒流源 (2)使用运放搭建的恒流源 (3)使用恒流二极管搭建的恒流源 pt100恒流源测温电路图_电子技术_电工之家 ...

数字世界 万物互联 9524

RCP程序设计实战之一:实战Splash Screen

我的实验环境如下:WindowsXP SP2,Eclipse 3.3+VE+GEF+EMF+GMF+UML2。在没有特殊声明的情况下,全部的代码都将在这个环境中实现。1.1. 缺省启动Logo与进度条通常情况下,当你用Eclipse的RCP向导生成一个应用程序时,PDE总是会在你的工程根目录下为你生成一个名为splash.bmp的图片作为启动Logo,其大小为500*330像素且名字是不可变的

软件开发资料汇总 708

杰理JL701N V142的SDK实现双备份自定义OTA教程和代码分享

摘要 本文档详细介绍了基于JL701N SDK的UART OTA升级功能开发方案。该方案采用双备份(Dual Bank)机制,通过串口实现安全可靠的固件远程更新。核心特性包括:1) 双备份升级机制确保升级失败可回滚;2) CRC-16/XMODEM校验保障数据完整性;3) 灵活的传输控制,支持自定义波特率和数据包大小。文档提供了完整的系统架构、API接口说明、通信协议规范以及移植指南,适用于生产烧录、现场升级等多种场景。配套Python升级工具简化了升级流程,使开发人员能够快速实现固件更新功能。

qq_42014563的博客 275

Unet++改进33:添加ConvolutionalGLU(2024最新改进方法)|紧凑的网络结构和高效的运算

由于残差连接的深度退化效应,许多依赖堆叠层进行信息交换的高效视觉变形模型往往不能形成足够的信息混合,导致视觉感知不自然。为了解决这个问题,在本文中,我们提出了聚合注意力,这是一种基于仿生设计的令牌混合器,它模拟生物中央凹视觉和连续眼运动,同时使特征映射上的每个令牌具有全局感知。此外,我们结合了可学习的令牌,与传统的查询和键交互,这进一步多样化了亲和矩阵的生成,而不仅仅依赖于查询和键之间的相似性。我们的方法不依赖于堆叠进行信息交换,从而有效地避免了深度退化,实现了自然的视觉感知。

AIcurator的博客 683

RCP-CoolBar:Eclipse桌面应用可折叠工具栏设计实践

CoolBar是SWT原生提供的可拖拽、自适应布局的容器控件,其核心原理在于通过CoolItem封装任意SWT控件,并由底层操作系统API直接渲染,规避了Web方案的多层抽象开销。这种原生UI架构赋予了它毫秒级响应、高DPI精准适配和跨平台行为一致的技术价值,特别适用于工业控制、设备调试等对实时性与稳定性要求严苛的Java桌面应用场景。本文深入解析RCP-CoolBar在Eclipse RCP环境下的三层架构重构、拖拽重排实现、状态持久化设计及高DPI/暗色模式适配等关键实践,覆盖CoolItem创建陷阱、

weixin_42529328的博客 256

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

设计资料第212篇:RCP- CPCI刀片计算机

刀片计算机RCP- CPCI刀片计算机 一、产品简介 RCP-601是一款基于Intel i7双核四线程的高性能CPCI刀片式计算机,同时,将CPCI产品的欧卡结构及其可靠性、可维护性、可管理性与计算机的抗振动、抗冲击、抗宽温环境急剧变化等恶劣环境特性进行融合。产品特别注重DDR3双通道内存、PCI-E、USB、GbE和SATA等高速串行总线的信号完整性设计,以及高性能和宽温...

663

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

RCP之病人信息系统开发总结(1):数据库设计

系统全称:PatientInformationManagementSystem,简称PatientIMS 这个系统是《Eclipse Plug-in/RCP 开发方法详解》一书中的实例,但是我在原有系统上做了很多的改进 整个过程我的代码中有些是我的总结,有些是我的想法,有些实现了,有些没有实现。。。。。。 系统演示: 我没有去实现所有的功能,已经实现了登录模块,导航视图...

290

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

向RCP致敬

作为一个桌面应用的开发者,向 RCP 致敬的理由会是 RCP 提供了丰富的界面控件,使得基于 Java 开发桌面应用也变得容易了很多,尽管仍然不能和基于 VB 、 Delphi 去相比;对于我而言,尽管使用 ...

Pump Liu 207

向 RCP 致敬

作为一个桌面应用的开发者,向 RCP 致敬的理由会是 RCP 提供了丰富的界面控件,使得基于 Java 开发桌面应用也变得容易了很多,尽管仍然不能和基于 VB 、 Delphi 去相比;对于我而言,尽管使用 RCP 也是为了开发桌面应用,但 RCP 给我带来的更多的感觉是在它充分发挥插

seaofforest的专栏 515

RCP 用户 登录框

1. 在Application中有启动RCP的入口 @Override public Object start(final IApplicationContext context) throws Exception { final Display display = PlatformUI.createDisplay(); final Shell shell = Display.g

sidihuo的专栏 2486
上一篇: DB2 &windows机器名
下一篇: 系统还原(快照)VS系统备份
gaolingep
博客等级 码龄20年 1粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值