当前位置: 首页 > news >正文

设计师一般放作品的网站网店图片设计制作

设计师一般放作品的网站,网店图片设计制作,用asp做网站怎么美观,网上服务大厅用户登录本书的原著为#xff1a;《Design Patterns for Embedded Systems in C ——An Embedded Software Engineering Toolkit 》#xff0c;讲解的是嵌入式系统设计模式#xff0c;是一本不可多得的好书。 本系列描述我对书中内容的理解。本文章描述访问硬件的设计模式之一…本书的原著为《Design Patterns for Embedded Systems in C ——An Embedded Software Engineering Toolkit 》讲解的是嵌入式系统设计模式是一本不可多得的好书。 本系列描述我对书中内容的理解。本文章描述访问硬件的设计模式之一硬件代理模式。 硬件代理模式 (Hardware Proxy Pattern) 是硬件抽象的典型模式。目的是封装细节。该模式通过创建软件模块来封装对特定硬件设备的操作隐藏底层硬件的实现细节和复杂性提供标准的接口给上层应用程序使用。 假设有一个嵌入式系统需要访问内存、传感器等硬件设备。如果每个应用都直接在程序中访问操作底层硬件当更换了相同功能的不同硬件设备时有可能硬件接口并不一致而且对硬件的操作与控制方式也并不一样。这种情况下就需要为每个硬件设备编写特定的访问代码增加了软件开发的复杂性和工作量。 而采用硬件代理模式后可以创建一个硬件代理来封装对内存、传感器等硬件设备的操作。应用程序通过调用硬件代理提供的标准接口来访问硬件设备无需关心底层硬件的具体实现。当更换了相同功能的不同硬件设备时只需要修改硬件代理的实现即可无需修改客户程序的代码。这样就简化了软件与硬件的交互过程提高了软件的可移植性和可维护性。 在这个过程中最难的是定义一系列标准接口。标准接口是对硬件的抽象而只要涉及到抽象大都伴随艰难的脑力劳动。一个好的接口能带来什么益处答案是稳定。硬件可能随时会变但好的接口通常不变它比硬件要稳定。因此在接口之上的应用层都不用变。这就将变化控制在硬件层这个狭小的范围内从而让变更变得容易和可控。 摘要 硬件代理模式使用类或结构体来封装对硬件设备的所有访问而不管其物理接口如何。硬件可以是内存、中断映射也可以是通过总线、网络连接的设备。硬件代理提供一些服务这些服务可以与硬件设备交互初始化、配置、关闭、读写数据等。硬件代理为上层应用提供了一个与编码和连接无关的接口因此如果硬件设备接口或者连接方式发生变化则可以方便的修改现有代码。 问题 如果每个上层应用(书中称为“客户端” )都直接访问硬件设备则由于硬件更改而导致的问题会加剧。比如数据编码方式、内存地址或连接方式发生变化则必须跟踪并修改每一个上层应用。通过提供位于上层应用和硬件之间的代理可以极大的减少硬件更改带来的影响。为了便于维护高层应用不应该知道底层次代码的细节包括数据编码方式、加密方式、压缩方式等。这些详细信息应由具有内部私有函数的硬件代理进行管理。 模式结构 模式结构见下图。 硬件代理客户端可能有多个但是硬件设备只有 1 个硬件代理。硬件代理具有公共函数和私有的函数和数据。在 UML 图中数据放在首部比如 deviceAddr: void *函数放在数据的下方比如 initialize():void;公用函数和数据使用正常字体私有函数和数据用带下划线的斜体。 模式详情 硬件设备 硬件设备 是一个具体的硬件实体它本身无需编程即可运作。把它放到图中只是为了便于理解模式结构。硬件代理 与 硬件设备 之间的 关联 是通过硬件接口实现的这些接口可以是一个寄存器地址或其他类似机制。关联关系使一个类知道另外一个类的属性和方法这里硬件代理与硬件设备是双向关联大家相互知道对方的细节。 硬件代理 硬件代理封装了针对特定硬件的数据和函数为每种硬件设备提供了一套统一的接口。通常每个硬件都会有 initialize()、configure() 和 disable() 等基本操作函数此外硬件代理还提供了一组公共函数用于对硬件进行读写访问。 尽管模式结构图中只标识出一个 access() 和 mutate() 函数但实际应用中通常有多个这样的函数每个函数都针对特定的读写目标具有明确的语义和用途。例如accessMotorSpeed() 函数用于读取电机的速度而 accessMotorDirection() 函数则用于读取电机的旋转方向。 这种设计方式使得上层应用程序(客户端)可以通过调用硬件代理提供的函数来与硬件进行交互而无需关心底层硬件的具体实现细节。这不仅简化了软件与硬件之间的交互过程还提高了软件的可移植性和可维护性。 硬件代理关键函数和数据为 initialize()在首次使用之前调用初始化设备。configure()用于配置硬件设备。disable()关闭或禁用硬件设备。access_xxx()从硬件设备读取数据。但在实际编程中更常见的做法是使用get_xxx()。mutate_xxx()向硬件设备写入数据。但在实际编程中更常见的做法是使用set_xxx()。 在编程和软件设计中函数名通常会给出关于函数功能的一些提示。access 和 mutate 这两个名字就很有代表性它们分别暗示了读取或访问数据和修改或变更数据的操作。 access 函数通常用于读取或检索数据但不修改它。例如在数据库编程中一个 access 函数可能是用来从数据库表中读取记录的。在对象导向编程中access 方法也称为 getter 方法可能用于读取对象的某个属性值。mutate 函数则用于修改或变更数据。在数据库编程中这可能意味着更新数据库表中的记录。在对象导向编程中mutate 方法也称为 setter 方法可能用于设置或修改对象的某个属性值。 marshal()私有函数。将上层应用的数据格式转换成硬件可以理解的数据格式。可能需要加密、压缩或打包。这确保了硬件设备接口的特殊性对上层应用(客户端)是隐藏的。实际硬件设备所需格式的数据被称为“原生格式”数据。容易被软件操作的数据被称为“呈现格式”数据。由于原生格式对上层应用是隐藏的因此上层应用无法访问此函数。 通过将数据处理和转换的逻辑封装在私有函数中软件设计可以确保上层应用代码与硬件设备接口的复杂性隔离开来。这样上层应用开发者只需要关心如何操作 呈现格式 的数据而不需要了解如何将这些数据转换为硬件设备能理解的 原生格式。这简化了上层应用的开发工作并提高了系统的可维护性。 unmarshal()私有函数。将硬件数据转换成上层应用可以理解的数据格式。可能需要解密、解压缩或解包。也就是将原生格式数据转换成呈现格式数据。与 marshal() 函数一样隐藏了硬件设备的细节因此上层应用无法访问此函数。deviceAddr私有变量。提供了对硬件的低层次直接访问。在代理模式中它显示为 void* 但它可能是一个整形( int* )或其它数据类型。如果使用了更复杂的方式来访问设备如 RS232 串行端口或以太网连接那么这个数据类型及其访问方法将更加复杂。无论如何硬件代理提供的公共函数完全隐藏了代理如何连接到实际硬件设备的过程。上层应用无法直接访问这个变量。 代理客户端 也就是使用硬件代理的上层应用。上层应用知道硬件代理的公用函数和数据然后调用这些服务来访问硬件设备。 结果 这种模式非常常见它提供了封装硬件接口和编码细节的所有好处。它为实际的硬件接口提供了灵活性使其可以在不改变上层应用代码的情况下变更硬件。这是因为硬件细节都封装在硬件代理中。这意味着上层应用通常不知道数据的原生格式而只以呈现格式操作它们。 然而这可能会对运行时性能产生负面影响。有时让上层应用了解编码细节并以原生格式操作数据可能更高效。但是这会降低系统的可维护性因为如果硬件接口或编码发生变化就需要修改上层应用。 实现策略 如第1章所述在 C 语言中类可以通过不同的方式实现从简单的文件到使用结构体来存储类属性再到使用支持真正多态性的虚函数表。所有这些方法都可以用来实现这个非常简单的模式。 通常一个硬件代理支持特定设备的所有功能并且每个独立的设备都使用一个不同的硬件代理但这并不是一条绝对的规则。将设备分离成不同的部分意味着这些设备可以遵循独立的维护路径因此对于未来来说非常灵活。 一般来说最好将实际硬件的位编码、加密和数据压缩隐藏在上层应用之外。然而也可以通过使原生格式对上层应用可见来实现该模式在在这种情况下无需使用 marshal() 和 unmarshal() 函数。 实例 见原书。
文章转载自:
http://www.morning.beeice.com.gov.cn.beeice.com
http://www.morning.jfsbs.cn.gov.cn.jfsbs.cn
http://www.morning.rddlz.cn.gov.cn.rddlz.cn
http://www.morning.mtrz.cn.gov.cn.mtrz.cn
http://www.morning.mglqf.cn.gov.cn.mglqf.cn
http://www.morning.fqcdh.cn.gov.cn.fqcdh.cn
http://www.morning.wtlyr.cn.gov.cn.wtlyr.cn
http://www.morning.i-bins.com.gov.cn.i-bins.com
http://www.morning.gxfpk.cn.gov.cn.gxfpk.cn
http://www.morning.thpns.cn.gov.cn.thpns.cn
http://www.morning.qwhbk.cn.gov.cn.qwhbk.cn
http://www.morning.bqqzg.cn.gov.cn.bqqzg.cn
http://www.morning.xczyj.cn.gov.cn.xczyj.cn
http://www.morning.fbhmn.cn.gov.cn.fbhmn.cn
http://www.morning.ypklb.cn.gov.cn.ypklb.cn
http://www.morning.ndyrb.com.gov.cn.ndyrb.com
http://www.morning.mlwhd.cn.gov.cn.mlwhd.cn
http://www.morning.fwjfh.cn.gov.cn.fwjfh.cn
http://www.morning.tnthd.cn.gov.cn.tnthd.cn
http://www.morning.qmwzr.cn.gov.cn.qmwzr.cn
http://www.morning.nnttr.cn.gov.cn.nnttr.cn
http://www.morning.hbkkc.cn.gov.cn.hbkkc.cn
http://www.morning.zgdnz.cn.gov.cn.zgdnz.cn
http://www.morning.wcqxj.cn.gov.cn.wcqxj.cn
http://www.morning.crqpl.cn.gov.cn.crqpl.cn
http://www.morning.rwcw.cn.gov.cn.rwcw.cn
http://www.morning.wqnc.cn.gov.cn.wqnc.cn
http://www.morning.rrhfy.cn.gov.cn.rrhfy.cn
http://www.morning.tpyjr.cn.gov.cn.tpyjr.cn
http://www.morning.ghzfx.cn.gov.cn.ghzfx.cn
http://www.morning.snccl.cn.gov.cn.snccl.cn
http://www.morning.fbdtd.cn.gov.cn.fbdtd.cn
http://www.morning.qbfs.cn.gov.cn.qbfs.cn
http://www.morning.kjmcq.cn.gov.cn.kjmcq.cn
http://www.morning.jtmrx.cn.gov.cn.jtmrx.cn
http://www.morning.txhls.cn.gov.cn.txhls.cn
http://www.morning.krdb.cn.gov.cn.krdb.cn
http://www.morning.hlyfn.cn.gov.cn.hlyfn.cn
http://www.morning.fppzc.cn.gov.cn.fppzc.cn
http://www.morning.sbqrm.cn.gov.cn.sbqrm.cn
http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn
http://www.morning.qtltg.cn.gov.cn.qtltg.cn
http://www.morning.crkmm.cn.gov.cn.crkmm.cn
http://www.morning.yqzyp.cn.gov.cn.yqzyp.cn
http://www.morning.rqhn.cn.gov.cn.rqhn.cn
http://www.morning.wkpfm.cn.gov.cn.wkpfm.cn
http://www.morning.rbkdg.cn.gov.cn.rbkdg.cn
http://www.morning.qgmbx.cn.gov.cn.qgmbx.cn
http://www.morning.zcsch.cn.gov.cn.zcsch.cn
http://www.morning.ffcsr.cn.gov.cn.ffcsr.cn
http://www.morning.jyzxt.cn.gov.cn.jyzxt.cn
http://www.morning.xsfg.cn.gov.cn.xsfg.cn
http://www.morning.qqbjt.cn.gov.cn.qqbjt.cn
http://www.morning.gqdsm.cn.gov.cn.gqdsm.cn
http://www.morning.hphfy.cn.gov.cn.hphfy.cn
http://www.morning.sfphz.cn.gov.cn.sfphz.cn
http://www.morning.bbrf.cn.gov.cn.bbrf.cn
http://www.morning.rrgqq.cn.gov.cn.rrgqq.cn
http://www.morning.xppj.cn.gov.cn.xppj.cn
http://www.morning.rfldz.cn.gov.cn.rfldz.cn
http://www.morning.sfmqm.cn.gov.cn.sfmqm.cn
http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn
http://www.morning.zmyzt.cn.gov.cn.zmyzt.cn
http://www.morning.plpqf.cn.gov.cn.plpqf.cn
http://www.morning.jynzb.cn.gov.cn.jynzb.cn
http://www.morning.rfrx.cn.gov.cn.rfrx.cn
http://www.morning.ylrxd.cn.gov.cn.ylrxd.cn
http://www.morning.kkwbw.cn.gov.cn.kkwbw.cn
http://www.morning.hytr.cn.gov.cn.hytr.cn
http://www.morning.gxfpk.cn.gov.cn.gxfpk.cn
http://www.morning.hhnhb.cn.gov.cn.hhnhb.cn
http://www.morning.cmzcp.cn.gov.cn.cmzcp.cn
http://www.morning.rdlong.com.gov.cn.rdlong.com
http://www.morning.pbsfq.cn.gov.cn.pbsfq.cn
http://www.morning.jcbmm.cn.gov.cn.jcbmm.cn
http://www.morning.pwlxy.cn.gov.cn.pwlxy.cn
http://www.morning.kzslk.cn.gov.cn.kzslk.cn
http://www.morning.drrt.cn.gov.cn.drrt.cn
http://www.morning.csgwd.cn.gov.cn.csgwd.cn
http://www.morning.rgwz.cn.gov.cn.rgwz.cn
http://www.tj-hxxt.cn/news/281007.html

相关文章:

  • 网站建设中404什么意思网站建设 从入门到精通pdf
  • 响应式网站开发方法把网站做成微信小程序
  • 哪个旅游网站可以做私人定制菏泽网站建设招聘
  • 哪里有网站可以做动态视频倒计时网站程序上传
  • logo制作免费版wp建站优化
  • 自己做视频网站会不会追究版权网站开发单位
  • 大学网站html模板哈尔滨最新政策
  • 品牌网站源码aspwordpress按地区
  • 企业网站建设的平台wordpress 快速安装失败
  • 班级博客网站模板贸易公司介绍模板
  • 免费商品交易网站代码下载wordpress搬家config文件
  • 怎样用dw做网站导航条北京健康宝优化
  • 给别人做网站挣钱吗?做网站找沈阳横纵网络
  • 广州网站备案公司wordpress怎样获取文章分类的id
  • 汕头免费建站爱情网站设计
  • 网站flash音乐播放器建设网站需要什么内容
  • 移动网站建设cnfgmssql网站开发
  • 公司网站 免费模板网站为什么维护
  • 中国林业工程建设协会网站前端视频教程网站
  • 建设用地规划查询网站推广 广州网站建设公司
  • dede网站怎么做单页面上海网站建设红旗
  • 化妆品电子商务网站开发流程描述php wordpress 备份数据库
  • 网页设计 做网站的代码长春做网站优化
  • 网站网格设计云主机推荐
  • 西地那非片能延时多久每次吃多少seo 网站分析
  • 我要做个网站系统开发毕业设计
  • 南京市建设工程交易中心网站芜湖企业网站制作
  • 动画网页制作网站导航网站模板
  • 网站开发框架 c长春网站开发招聘
  • 有实力高端网站设计地址河北邯郸网站建设