第2页 章节:1.1 什么是设计模式?

摘录1

Christopher Alexander说过:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”;尽管Alexander所指的是城市和建筑模式,但他的意思也同样适用于面向对象设计模式。
 

摘录2

一般而言,一个模式有四个基本要素:
  1. 模式名称 (pattern name) 一个助记名,它用一两个词来描述模式的问题、解决方案和效果。
  2. 问题 (problem) 描述了应该在何时使用模式。
  3. 解决方案 (solution) 描述了设计的组成部分,它们之间的相互关系及各自的职责和协作方式。
  4. 效果 (consequences) 描述了模式应用的效果及使用模式应权衡的问题。

摘录3

    ...本书中的设计模式是 对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述
    
 
      总结:
    这章介绍了什么是设计模式,以及该书里的设计模式是什么样子,都有精确的描述。该章节后半段说到了语言,本书使用Smalltalk 和 C++作为示例语言,因为这些语言越来越流行(?)以及都是面向对象的语言,而不是过程式语言。从实用角度出发,选了它们。如果使用过程式,就可能要包括“继承”,“封装”和“多态”的设计模式,而一些面向对象语言就可以直接支持某些模式。




转载于:https://www.cnblogs.com/banyanCheung/p/3178619.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一道很具体的嵌入式系统设计题目,需要对硬件和汇编语言编程都有较好的掌握。以下是一个简单的实现思路: 硬件部分: 1. 使用89C51单片机控制数码管和按钮。 2. 用2个共阳极数码管显示票数,其中一个显示已投票数,另一个显示未投票数。 3. 7个人投票的按钮连接到89C51单片机的P1.1至P1.7端口。 4. 主持人控制投票开始、暂停和记票清零重新开始的按钮连接到89C51单片机的P1.0端口。 编程部分: 1. 初始化程序,包括设置数码管和按钮的输入输出口,以及设置外部中断。 2. 开始投票,主持人按下开始按钮后,程序进入投票状态,等待7个人投票。 3. 接收投票,每当有人按下按钮时,程序检测是否已经投过票,如果没有,则累加已投票数,否则忽略该按键。 4. 暂停投票,主持人按下暂停按钮后,程序进入暂停状态,此时不再接受投票。 5. 记票清零,主持人按下记票清零按钮后,程序清空已投票数和未投票数,并重新开始投票。 代码实现: ``` ORG 0H MOV P1,#11111110B ; P1.0作为输入,设置为1 MOV P2,#0FFH ; P2口为输出口,初始值为0FFH MOV P3,#0FFH ; P3口为输出口,初始值为0FFH MOV TMOD,#01H ; 设置定时器0为模式1 MOV TH0,#3CH ; 定时器初值设为3CH MOV TL0,#0B4H ; 定时器初值设为0B4H SETB TR0 ; 开始定时器0 START: CLR P1.0 ; 投票开始 SETB EX0 ; 开启外部中断0 MOV A,#0 ; 初始化已投票数 MOV R0,#0 ; 初始化未投票数 JMP WAIT VOTE: CPL P1.0 ; 投票暂停 CLR EX0 ; 关闭外部中断0 SJMP WAIT CLEAR: MOV A,#0 ; 清零已投票数 MOV R0,#0 ; 清零未投票数 JMP WAIT WAIT: MOV P2,#0FFH ; 显示已投票数 MOV P3,#A ; A为已投票数 ACALL DELAY ; 延迟一段时间 MOV P2,#0FFH ; 显示未投票数 MOV P3,#R0 ; R0为未投票数 ACALL DELAY ; 延迟一段时间 SJMP WAIT DELAY: MOV R1,#20H LOOP1: MOV R2,#0FFH LOOP2: DJNZ R2,LOOP2 DJNZ R1,LOOP1 RET INT0_ISR: MOV A,P1 ; 获取按键值 CJNE A,#1BH,VOTE ; 如果不是7个投票按钮之一,跳过 MOV A,P2 ; 获取已投票数 INC A ; 已投票数加1 MOV P2,A ; 显示已投票数 ACALL DELAY ; 延迟一段时间 SETB P1.0 ; 闪烁提示已投票 ACALL DELAY ; 延迟一段时间 CLR P1.0 ; 关闭提示 JMP INT_EXIT INT_EXIT: RETI END ``` 以上代码只是一个简单的实现,如果要考虑更多的功能和异常情况,需要进一步完善程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值