设计oo的时候,你要分析需求,设计各个模块的通信接口,这个过程,同样需要经验,同样需要摸索,同样没有一踀而就的捷径。
但是,oo设计的时候又要避免过度,一些时候,在是否通过接口预留灵活性,提取容易变化的部分,或者是尽量简单之间,还是有冲突的。你需要做一个艰难的猜测和抉择。
而一旦抉择作出,以后如果发现事情进展不如所愿,那么改动接口的代价相当的大。
OO的关键是需求。
所谓"refactor",不过也是强调需求,让你不要自作聪明地瞎假设需求而复杂化设计。时刻着眼于当前的需求。这样,一旦需求变更,所浪费的力气可以保证最小,而且,船小才好调头嘛。
如果需求分析的不好,一切就歇菜了,虽然因为一些比如ioc之类的设计方法能让你不至于推到重来,但是需求仍然是重中之重。
那些什么上下文没有,上来就说“怎么用OO来做一个人骑车呀?”,“是人.骑(车)呀?还是车.被骑(人)?”纯粹是没头没脑地瞎掰。
而CO的关键则是组合子和组合规则的设计。这些组合方法必须非常精巧,尽量正交。组合子的设计既要简单(越简单才越容易被组合),还要完整。
比如说,对整数这个组合子,我们有+-*等组合方法,这样只要有了0,1这两个组合子,我们就可以构造出整个整数世界。
可是,精巧的组合子设计也不是那么容易的。需要有一点点数学的感觉和严密的逻辑思维基础。
而如果使用co,在设计简单的各个组合子的时候,你会以一种非常渐进式的方式来发现:哦,原来的组合子设计不够正交,有这个地方可以抽出来,好,抽出来,把波及到的几个组合子的设计修改一下。
因为组合子都非常简单,这个变化的波及范围一般来说相当小。
细节封装。这个封装不是一般OO意义上的封装,而是说:把要实现的接口细节封装起来,让客户通过预定义好的组合方式来扩展,而不是象oo那样让用户实现实现这个接口来扩展。
分享到:
相关推荐
《滨水景观与规划——连云港东哨西墅核心湖城市设计及景观扩初设计》是针对沿海城市连云港的一项重要规划设计项目。此方案文本主要聚焦于如何有效地利用和优化滨水区域,结合当地特色,创造出既美观又实用的城市景观...
【标题】"机械毕业设计——初扎机-压下系统设计.zip" 提供了一个关于机械工程领域的毕业设计项目,主要关注的是初扎机的压下系统。初扎机是金属加工过程中常见的一种设备,用于对原材料进行初步成型,通常在钢铁制造...
在设计之初,对目标用户的需求进行了梳理。应用的核心功能可能包括浏览手工作品、购买、上传用户自己的作品、社交互动等。设计者关注了如何让用户在移动设备上便捷地完成这些操作,同时保持界面的直观性和易用性。 ...
总之,《C++设计新思维:泛型编程与设计模式之应用》是一本将理论与实践完美结合的作品,它不仅适合那些初入编程领域的新人,也适用于那些希望提高自身技能的资深开发者。通过这本书,读者将能够更好地利用C++的泛型...
QQ浏览器for Pad“初”之设计,正是在这样的背景下应运而生,试图打破传统浏览器设计的界限,为用户带来一种全新的内容获取体验。 设计师们首先对媒体发展的历程进行了反思。在印刷媒体和电视一度占据主导地位之后...
"教育机器人在C语言程序设计课程改革中思考" 本文探讨了教育机器人在C语言程序设计课程改革中的应用。传统的教学方法在教学《C语言程序设计》课程中采用Python、Visual C++、Keil C等平台,但是这些方法不够直观,...
《人工智能初体验》教学设计的评述中,涵盖了人工智能基础概念的学习、知识与技能在生活中的应用、以及教学方法的设计等重要知识点。以下是对这些知识点的详细解读: 1. 教学内容与生活实际相结合:文章强调了人工...
这意味着设计师需要深入了解用户的具体需求,并在此基础上进行创造性的思考。 #### 软件设计的方式 - **计划的设计**:类似于建造苏州拙政园这样的复杂建筑项目,需要预先制定详细的规划。在软件开发中,这通常意味...
教师应始终铭记教育的初心,不忘教育使命,将教育视为一项崇高的事业,而非仅仅作为谋生的手段。教师应以学生的发展为中心,关心学生的全面发展,包括道德、智力、身体和美育等各个方面。 总而言之,教育是关乎社会...
《像外行一样思考,像专家一样实践:科研成功之道》是卡耐基梅陇大学一位美国工程院院士的著作,这本书旨在为科研工作者提供独特的思维方式和实践经验,帮助他们在科研道路上取得成功。书中不仅包含了作者对科研工作...
本书不仅为初入行业的新人提供了实用的指南,也为经验丰富的开发者们揭示了新的思考角度,是一本不可多得的软件开发领域参考书。 “简单”,在软件开发领域里,不是简陋的代名词,更不是缺乏深度的标志。相反,简单...
立体主义是20世纪初西方最具影响力的现代艺术流派之一。该派别主张打破传统的透视法则,将物体分解为多个视角下的几何形态,并在同一画面上呈现这些不同角度的视图。这种对物体多维度的表现方式,极大地拓展了人们的...
《设计原本》帮助开发者提升代码层面的设计能力,而《架构之美》则引导他们思考如何构建适应性的、有弹性的大型系统。无论是初入行业的新人,还是经验丰富的资深开发者,都能从中受益匪浅,提升自己的架构设计水平,...
教师应在教学之初就明确C语言的广泛用途,通过引入实际应用案例,帮助学生理解C语言在不同领域的应用价值,从而提升学生的学习兴趣和学习目标。 2. 强化实践教学,注重理论与实践的结合。教师应设计更多与实际应用...
从提供的文件内容来看,该文档是一份关于教学设计及思考的资料,主要围绕如何通过分析和理解《父爱之舟》这篇文章的场景细节,来实现深度学习的教学目标。以下是对文档中所涉及知识点的详细说明: 首先,文章《父爱...
设计思考07131是关于智能电厂控制系统的详细介绍,涉及到多个关键功能模块和技术要点,主要涵盖网络协议、设备管理和实时监控等方面。 首先,系统中包含各种设备,如基站、门禁和摄像头,它们的数据存储在不同的表...
#### 一、初入设计院的困惑与挑战 对于刚刚踏入建筑结构设计领域的新人而言,面对的是一个全新的世界,充满了未知与挑战。从校园到职场的转变,不仅仅是环境的变化,更是知识体系与实践技能的跃迁。在建筑结构设计...