看过很多国外的编程好书,对面向对象的编程方法的最终都总结为“契约式”编程方法。建议大家不要大肆追求那些乱七八糟的设计模式,方法论什么的。大部分的新手往往看这样的书都会潜意识的死命的去记这些方法,原则。结果往往是浪费时间,云里雾里。
契约式的基本思想是面向对象,面向对象的基本思想是物理化,现实化。现在我要开发一个简单的MP3播放器,我对此MP3的需求是:能暂停和播放,能看到加载进度和播放进度。那么我们就可以建立一个简单的契约,先对MP3进行分解。

可视化对象:一个暂停按钮,一个播放按钮,一个加载进度条和一个播放进度条
非可视化对象:声音对象(控制声音的播放和音频通道等信息)
不管三七二十一,先把这些分解出来的对象建立起来,我们新建了几个文件分别对应这些对象:
Play_btn.as  //播放按钮
Pause_btn.as  //暂停按钮
Process.as  //音乐加载进度条
Time_bar.as  //播放进度条(时间头)
Music.as  //非可视化的声音对象

契约式编程一个很重要的原则是要弄清楚自己该做的事情。比如对于按钮对象的点击处理事件,你不可以放到音乐对象中去处理,因为它确确实实是发生在按钮对象身上的。
现在我们还需要一种通信机制,上面的对象如果不与其他对象进行通信和交互,那么毫无用处。举个例子:我点击了暂停按钮对象,那么正在播放的音乐对象必须要停止播放,这里就涉及到两个对象之间的通信。一个完整的系统就是其中的大大小小的对象之间进行各种通信而完整运行的,而这些大大小小的对象又可以进行细分。
系统之间的交互和通信是系统良好运行的关键,我们就必须建立一种通信机制。就像危机系统的总线结构有 PCI总线和ISA总线等结构,这些总线结构其实就是系统各部件之间的通信机制和标准。对于契约式编程,你当然可以相处各种各样的通信方法。我这里以个人 拙见,简单的讲解为“插座式通信”,插座大家都见过的吧,插座是一个中心,可以用导线连接很多对象。类似于网络拓扑中的星形结构。任何两个对象要进行通 信,先把信号发送到插座中,再由插座决定下一步信号发送到哪个对象(插座成了中央处理单元CPU了O(∩_∩)O~)。
恰好,在actionscript编程中有个入口类,也就是文档类,我们就把此入口类当做插座吧,负责连接各个对象之间的通信。新建一个文件
Main.as  //入口类、文档类、插座

    博视界科技专注于沉浸式全景数字餐厅、全息酒店宴会厅,旨在帮传统餐饮用科技玩跨界,欢迎咨询!

官方网站:www.boseetech.com

联系方式:    

微信联系我:


    【声明】转载本文请注明出处三人行设计,并保留有效链接:浅谈“契约式”编程,附一个简单mp3播放器实例讲解 http://www.srxtuan.com/archives/1496,谢谢!

猜您还喜欢: