`
frankwu
  • 浏览: 9235 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

设计之初的一些思考

阅读更多
设计oo的时候,你要分析需求,设计各个模块的通信接口,这个过程,同样需要经验,同样需要摸索,同样没有一踀而就的捷径。

但是,oo设计的时候又要避免过度,一些时候,在是否通过接口预留灵活性,提取容易变化的部分,或者是尽量简单之间,还是有冲突的。你需要做一个艰难的猜测和抉择。
而一旦抉择作出,以后如果发现事情进展不如所愿,那么改动接口的代价相当的大。  

OO的关键是需求。
所谓"refactor",不过也是强调需求,让你不要自作聪明地瞎假设需求而复杂化设计。时刻着眼于当前的需求。这样,一旦需求变更,所浪费的力气可以保证最小,而且,船小才好调头嘛。
如果需求分析的不好,一切就歇菜了,虽然因为一些比如ioc之类的设计方法能让你不至于推到重来,但是需求仍然是重中之重。

那些什么上下文没有,上来就说“怎么用OO来做一个人骑车呀?”,“是人.骑(车)呀?还是车.被骑(人)?”纯粹是没头没脑地瞎掰。

而CO的关键则是组合子和组合规则的设计。这些组合方法必须非常精巧,尽量正交。组合子的设计既要简单(越简单才越容易被组合),还要完整。
比如说,对整数这个组合子,我们有+-*等组合方法,这样只要有了0,1这两个组合子,我们就可以构造出整个整数世界。
可是,精巧的组合子设计也不是那么容易的。需要有一点点数学的感觉和严密的逻辑思维基础。


而如果使用co,在设计简单的各个组合子的时候,你会以一种非常渐进式的方式来发现:哦,原来的组合子设计不够正交,有这个地方可以抽出来,好,抽出来,把波及到的几个组合子的设计修改一下。

因为组合子都非常简单,这个变化的波及范围一般来说相当小。



细节封装。这个封装不是一般OO意义上的封装,而是说:把要实现的接口细节封装起来,让客户通过预定义好的组合方式来扩展,而不是象oo那样让用户实现实现这个接口来扩展。
分享到:
评论

相关推荐

    滨水景观与规划-15-方案文本.连云港东哨西墅核心湖城市设计及景观扩初设计EDAWtation.rar

    《滨水景观与规划——连云港东哨西墅核心湖城市设计及景观扩初设计》是针对沿海城市连云港的一项重要规划设计项目。此方案文本主要聚焦于如何有效地利用和优化滨水区域,结合当地特色,创造出既美观又实用的城市景观...

    机械毕业设计——初扎机-压下系统设计.zip

    【标题】"机械毕业设计——初扎机-压下系统设计.zip" 提供了一个关于机械工程领域的毕业设计项目,主要关注的是初扎机的压下系统。初扎机是金属加工过程中常见的一种设备,用于对原材料进行初步成型,通常在钢铁制造...

    [慢工细活] 设计思考

    在设计之初,对目标用户的需求进行了梳理。应用的核心功能可能包括浏览手工作品、购买、上传用户自己的作品、社交互动等。设计者关注了如何让用户在移动设备上便捷地完成这些操作,同时保持界面的直观性和易用性。 ...

    C++设计新思维:泛型编程与设计模式之应用(PDF)

    总之,《C++设计新思维:泛型编程与设计模式之应用》是一本将理论与实践完美结合的作品,它不仅适合那些初入编程领域的新人,也适用于那些希望提高自身技能的资深开发者。通过这本书,读者将能够更好地利用C++的泛型...

    QQ浏览器for Pad“初”之设计.docx

    QQ浏览器for Pad“初”之设计,正是在这样的背景下应运而生,试图打破传统浏览器设计的界限,为用户带来一种全新的内容获取体验。 设计师们首先对媒体发展的历程进行了反思。在印刷媒体和电视一度占据主导地位之后...

    教育机器人在C语言程序设计课程改革中思考.pdf

    "教育机器人在C语言程序设计课程改革中思考" 本文探讨了教育机器人在C语言程序设计课程改革中的应用。传统的教学方法在教学《C语言程序设计》课程中采用Python、Visual C++、Keil C等平台,但是这些方法不够直观,...

    基于生活,强化自主——评《人工智能初体验》教学设计.pdf

    《人工智能初体验》教学设计的评述中,涵盖了人工智能基础概念的学习、知识与技能在生活中的应用、以及教学方法的设计等重要知识点。以下是对这些知识点的详细解读: 1. 教学内容与生活实际相结合:文章强调了人工...

    设计之道.pdf

    这意味着设计师需要深入了解用户的具体需求,并在此基础上进行创造性的思考。 #### 软件设计的方式 - **计划的设计**:类似于建造苏州拙政园这样的复杂建筑项目,需要预先制定详细的规划。在软件开发中,这通常意味...

    不忘从教初心,牢记师德使命-教学设计公开课.pdf

    教师应始终铭记教育的初心,不忘教育使命,将教育视为一项崇高的事业,而非仅仅作为谋生的手段。教师应以学生的发展为中心,关心学生的全面发展,包括道德、智力、身体和美育等各个方面。 总而言之,教育是关乎社会...

    像外行一样思考,像专家一样实践:科研成功之道(修订版)_13702974.zip

    《像外行一样思考,像专家一样实践:科研成功之道》是卡耐基梅陇大学一位美国工程院院士的著作,这本书旨在为科研工作者提供独特的思维方式和实践经验,帮助他们在科研道路上取得成功。书中不仅包含了作者对科研工作...

    简单之美——软件开发实践者的思考

    本书不仅为初入行业的新人提供了实用的指南,也为经验丰富的开发者们揭示了新的思考角度,是一本不可多得的软件开发领域参考书。 “简单”,在软件开发领域里,不是简陋的代名词,更不是缺乏深度的标志。相反,简单...

    探讨美术学与现代艺术设计的思考.docx

    立体主义是20世纪初西方最具影响力的现代艺术流派之一。该派别主张打破传统的透视法则,将物体分解为多个视角下的几何形态,并在同一画面上呈现这些不同角度的视图。这种对物体多维度的表现方式,极大地拓展了人们的...

    架构设计经典书籍

    《设计原本》帮助开发者提升代码层面的设计能力,而《架构之美》则引导他们思考如何构建适应性的、有弹性的大型系统。无论是初入行业的新人,还是经验丰富的资深开发者,都能从中受益匪浅,提升自己的架构设计水平,...

    C语言课程教学改革中的一些思考.pdf

    教师应在教学之初就明确C语言的广泛用途,通过引入实际应用案例,帮助学生理解C语言在不同领域的应用价值,从而提升学生的学习兴趣和学习目标。 2. 强化实践教学,注重理论与实践的结合。教师应设计更多与实际应用...

    紧扣场景细节,实现深度学习——《父爱之舟》教学设计及思考.pdf

    从提供的文件内容来看,该文档是一份关于教学设计及思考的资料,主要围绕如何通过分析和理解《父爱之舟》这篇文章的场景细节,来实现深度学习的教学目标。以下是对文档中所涉及知识点的详细说明: 首先,文章《父爱...

    设计思考07131

    设计思考07131是关于智能电厂控制系统的详细介绍,涉及到多个关键功能模块和技术要点,主要涵盖网络协议、设备管理和实时监控等方面。 首先,系统中包含各种设备,如基站、门禁和摄像头,它们的数据存储在不同的表...

    结构设计新人入门培训

    #### 一、初入设计院的困惑与挑战 对于刚刚踏入建筑结构设计领域的新人而言,面对的是一个全新的世界,充满了未知与挑战。从校园到职场的转变,不仅仅是环境的变化,更是知识体系与实践技能的跃迁。在建筑结构设计...

Global site tag (gtag.js) - Google Analytics