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

设计之初的一些思考

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

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

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

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

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


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

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



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

相关推荐

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

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

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

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

    [慢工细活] 设计思考

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

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

    QQ浏览器for Pad“初”之设计探讨了平板电脑版本的浏览器设计过程,旨在提供更为自然、平和且丰富的内容获取体验。设计者首先反思了媒体发展的历程,指出网络正在逐步取代印刷和电视作为主要的信息传播渠道,而...

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

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

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

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

    设计之道.pdf

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

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

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

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

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

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

    《简单之美——软件开发实践者的思考》是一本深入探讨软件开发艺术与哲学的书籍,它强调在复杂的IT世界中寻找并实现简洁之道的重要性。作者通过自己的实践经验,分享了如何在软件设计、编码、项目管理等多个层面追求...

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

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

    架构设计经典书籍

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

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

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

    小升初需要提升的学习方法和Java小游戏设计.docx

    在学习之余,设计简单的Java小游戏是一种寓教于乐的方式,可以增强学习兴趣,帮助学生巩固知识。例如,上述的Java代码设计了一个关于唐诗的小游戏。通过选择题的形式,让学生在游戏中回顾文学知识,提高语文应试能力...

    设计思考07131

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

    SQL SERVER 2000课程设计的实践与思考.pdf

    SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在20世纪末到21世纪初广泛应用于企业级数据存储和管理。在进行SQL Server 2000的课程设计时,学生或从业者不仅需要掌握基本的SQL语法,还要理解其在...

    结构设计新人入门培训

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

Global site tag (gtag.js) - Google Analytics