`
touchmm
  • 浏览: 1037765 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

voting设计模式

阅读更多

Voting 模式

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype>

1.语境:这个设计模式是从多人投票的模型中抽象出来的,其中参与者voter是一个个投票者,每个投票者都维护一个状态COUNTVOTE()操作可以改变COUNT的状态,COUNTER是计票器,每个投票者可以通过ATTACH()DETACH()操作与COUNTER联系起来,同时COUNTER通知每个登记的投票者去投票,然后通过COUNTWINNER()操作来对得票进行统计,其它用户通过GETCOUNT()操作得到最终投票结果。其中所有的COUNT成员变量都在同一个取值范围。与观察者模式很相像,不同在于观察者模式强调维护两者的状态一致性,而VOTING模式强调并行处理并对处理结果进行统计等处理。

2.意图:同一件事情交由多个不同的处理者(相同的接口,不同的实现)处理,然后对结果进行汇总处理。

3.效果:
1.COUNTERVOTER的抽象耦合

每个COUNTER所知道的仅仅是它有一系列VOTER,每个都符合抽象的VOTER简单的接口。COUNTER不知道任何一个VOTER属于哪个具体的类,这样两者之间的耦合是最小的。

2.支持广播通信


注:这个模式是我2年前想到的,后来看的书多了才知道这其实是“主控-从属”模式的一个变体

分享到:
评论

相关推荐

    Tensor Voting

    感知组织方法能够帮助算法区分图像中的主要特征和背景噪声,识别结构和模式,从而在复杂背景中定位目标、重建三维结构等。 Tensor Voting框架结合了数据驱动、局部处理和假设最小化的特点,提出了一种统一的感知...

    1.Online voting_java_unionkaj_voting_

    Java的Spring Boot框架提供了强大的MVC模式,便于构建RESTful API,处理HTTP请求。 5. **安全性**:投票系统的安全性是首要考虑的问题,防止恶意攻击和篡改数据。可以通过HTTPS加密传输、CSRF防护、输入验证等方式...

    8-people-voting.zip_voting_表决器_表决器 单片机

    【标题】8-people-voting.zip_voting_表决器_表决器 单片机 【描述】8人表决器是一种基于单片机技术设计的电子设备,主要用于多人会议或活动中的投票、抢答等场景。它能有效地实现8位参与者的投票功能,尤其适用于...

    Web-based-voting-system.rar_java 投票_voting_投票

    1. 设计数据库模式,定义表结构和关系。 2. 创建和配置Struts的Action类,定义每个投票动作的处理逻辑。 3. 编写JSP页面,展示投票界面,包含投票选项和提交按钮。 4. 实现业务逻辑,如验证用户权限,处理投票提交等...

    matlab代码做游戏-game-theory-voting-system:EmilyShen和RonRivest的代码实现了基于博弈论的投票

    6. **数据结构与设计模式**:在处理投票系统时,可能会使用到特定的数据结构(如投票矩阵)和设计模式(如观察者模式用于实时更新投票结果)。 7. **软件工程实践**:开源项目通常遵循一定的软件开发流程,如版本...

    投票系统:VotingSystem

    在`VotingSystem`中,开发人员可能利用`TypeScript`的强类型系统来定义和验证数据结构,以及实现面向对象的编程模式。使用`tsc`编译器将`.ts`源文件编译为可运行的JavaScript代码。 #### TypeScript 的主要特性: ...

    Online-voting-system:Java在线投票系统

    这个系统采用前后端分离的设计模式,前端使用HTML进行页面展示,而后端则利用JSP(JavaServer Pages)、MySQL数据库和Java Servlets来处理业务逻辑和数据存储。 1. **Java**: Java是一种广泛使用的面向对象编程语言...

    voting:投票系统,提供后台

    "voting"是一个专为实现表决功能而设计的投票系统,它包含了后台管理界面,便于管理员进行各种投票活动的管理和监控。该系统的核心特点是开源,允许用户深入研究代码,进行定制化开发,以满足不同场景下的需求。 一...

    vue-voting-dapp

    - `yarn serve`:这是Vue CLI提供的一个命令,用于在开发模式下启动一个热重载的本地服务器,代码修改后会自动刷新页面,提高开发效率。 - `yarn build`:这个命令将项目打包成生产环境可用的文件,经过优化和压缩...

    online-voting-system

    3. **MVC架构模式**:Model-View-Controller(MVC)是一种常见的软件设计模式,用于将业务逻辑(模型)、用户界面(视图)和控制逻辑(控制器)分离,使得代码结构更清晰,易于维护。 4. **数据库管理**:在线投票...

    redux-tdd-voting

    总的来说,"redux-tdd-voting" 项目涵盖了前端开发中的多个重要方面,包括状态管理、测试策略、以及可能的 UI 设计和交互。通过这个项目,开发者可以深入理解如何在实际项目中有效地使用 Redux 和 TDD。

    J-Voting:J投票项目-L3 MIAGE

    "J-Voting: J投票项目-...通过深入学习和理解J-Voting项目,不仅可以掌握Java编程技术,还能了解到Web应用的完整生命周期,包括需求分析、设计、编码、测试和维护等多个环节,这对于提升IT专业人士的综合能力大有裨益。

    voting-app:基本的投票应用程序,支持用户为他们选择的候选人投票

    【标题】"voting-app:基于JavaScript的...通过深入分析其源代码,我们可以更详细地了解其工作原理、设计模式以及具体的实现技术。这样的应用对于学习Web开发,尤其是JavaScript和用户交互设计,具有很好的实践价值。

    Weighted Voting System With Unreliable Links

    加权投票系统(Weighted Voting System, WVS)是一种重要的决策机制,在多个领域都有广泛应用,包括但不限于不精确数据处理、安全监控与自检、模式识别及目标检测等。在这些应用场景中,通常需要对一个提议进行接受...

    voting-system.zip_数据结构_Visual_C++_

    6. **设计模式**: - **工厂模式**:用于创建候选人对象,保持代码的灵活性和可扩展性。 - **观察者模式**:当票数发生变化时,可以通知其他部分(如界面)更新显示。 综上所述,这个"voting-system.zip"项目涉及...

    Alpha Simple Voting system:简单的投票系统-开源

    Alpha投票系统采用开源模式,意味着开发者和社区成员可以贡献自己的代码,改进系统,或者根据需求定制化系统,这极大地增加了系统的灵活性和透明度。 在Alpha Simple Voting System中,用户必须首先进行登录和注册...

    Oracle RAC集群运行模式研究与分析.pdf

    对于数据库管理员和架构师而言,深刻理解RAC及其Flex模式的功能、架构和操作对于设计和维护高性能、高可靠的数据库系统至关重要。随着企业对数据存储的需求不断增长,对Oracle RAC等高级数据库技术的研究和应用也将...

    2014年世界杯投票系统

    这些设计模式提高了代码的重用性和模块化,使系统更加灵活。 总的来说,《2014年世界杯投票系统》利用了Java的强大特性和库,构建了一个功能齐全、稳定可靠的在线投票平台。它展示了如何运用面向对象编程、异常处理...

    EasyVote - Practical online voting-开源

    这种开放的模式促进了系统的持续改进和适应性,同时也鼓励了用户之间的协作与知识共享。 ### 6. 部署与维护 部署`EasyVote` 需要一定的服务器配置知识,包括安装必要的依赖项、配置数据库以及设置服务器环境。管理...

    Oracle数据库规划设计和运行维护方案

    在RAC集群管理中,检查RAC状态、管理OCR和VOTING DISK、CSS监控以及使用SRVCTL工具都是保持集群稳定的关键操作。 数据库备份是防止数据丢失的重要手段,包括脱机、联机和RMAN备份,配合合理的备份策略,可以实现...

Global site tag (gtag.js) - Google Analytics