- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计模式和代码重构
什么是优秀的设计
抗拒变化是无用的
他们不知道自己需要什么,因此也无法提出要求
他们知道自己需要什么,但不知道如何说明它
他们能够说明,但我们误解了他们
我们理解了,但漏掉了隐含的意义、优先级或细节
所有这一切都没问题,但市场总会变化
软件需求变更法则
软件不断变更法则:真实世界中使用的程序必须进行变更,否则它在环境中的作用就会越来越小.
敏捷思想最大的贡献-1
对软件需求变化的态度
传统工程学里有一个基本假设是,需要对未来有很详
细的计划和预测,有清晰的进度和流程。但其实软件
开发非常不同,它包含很多艺术的成分,人的创造力
至关重要,而且软件的需求非常易变。而敏捷对预测
未来的方式是全新的,强调通过提高团队的能力、设
计的弹性和流程的灵活性来适应变化。这种思路对软
件开发也是很大的冲击。
案例分析-1
需求描述
?? 客户名称:影片租赁连锁企业
?? 统名称:影片租赁管理系统
?? 需求描述:
?? 1:完成影片连锁企业租赁管理系统, 可以计算每一位客户的消费金额和影
片的详细信息,金额根据影片的类型和租赁的日期来进行计算.
?? 2:客户把影片分成3类进行管理 A:最新电影 B:普通电影 C:儿童影片.
?? 3:费用计算规则如下
?? a:是普通电影,如果租期小于2天,费用为2元钱.如果租期大于两天,费用是
租期减去2,每天1.5元
?? b:如果是新片电影,费用为每天3元
?? c:是儿童电影,如果租期小于3天,费用为1.5元钱.如果租期大于三天,费用
是租期减去3,每天1.5元
?? 4:每次客户租赁电影可以为客户积累积分,规则是每次累计增加1分. 如果
是新片,并且租期大于1天,再增加一分
?? 5:暂且不要考虑系统界面问题和系统的存储问题
总结
增加一个功能特性的成本并不单单是为这些功能编码所花费时间的成本,还应该包括特性扩展的障碍成本。
什么是好的设计
一个好的系统设计应该有如下的性质:可扩展性、灵活性、可插入性。
好的设计的目标
可扩展性(Extensibility): 新的功能可以很容易地加入到系统之中,这就是可扩展性.
灵活性(Flexiblity) :可以容许代码修改平稳,而不会波及到很多其他的模块.这就是灵活性
可插入性(Pluggability) :可以很容易地将一个类抽出去,同时将另一个有同样接口的类加入进来.这就是可插入性.
开放-封闭原则(OCP)
软件组成实体(类,模块,函数,等等)应该是可扩展的,但是不可修改的。
即软件实体可以通过增加新代码实现扩展,但是不能修改已有的代码
任何系统在其生命周期中都会发生变化。如果我们希望开发出的系统不会在第一版本后就被抛弃,那么我们就必须牢牢记住这一点。
优秀设计
发现变化/封装变化
隔离变化
动态绑定
解耦具体依赖
适应变化
好的程序设计所面临的最主要的挑战之一就是适应变化.
设计原则1:发现变化,封装变化
找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起.
实现:把会变化的部分取出并封装起来,以便以后可以轻易地改动和扩充此部分,而不影响不需要变化的其他部分.
抽象稳定接口设计
设计原则2:抽象稳定接口,针对接口
抽象接口:创建出固定却能描述一组任意个可能行为的抽象体,这个抽象就像抽象基类或者接口,任意个可能的行为就是可能的派生类.
针对接口(抽象)设计:由于模块子间依赖一个固定的抽象,所以它对于更改可以是关闭的.
设计原则3:分离变化维度,单一职责原则
单一原则:就一个类而言,应该仅有一个引起它变化的原因.
职责定义为 “变化的原因(a reason for change)”,如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责.
静态绑定 与 动态绑定
代码结构在编译时刻就被确定下来了,比如它由继承关系固定的类组成,或者硬编码实现等。
而程序的运行时刻结构是由快速变化的对象实现。编译时两个结构是彼此独立的。
蜡笔(粗细的变化和颜色的变化,静态绑定)
画笔(粗细的变化和颜色的变化,分离,动态绑定)
设计原则4:尽量动态绑定,组合/聚合复用原则
尽量的使用合成和聚合,而不是继承关系达到复用的目的。
该原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的。
多态与继承
继承是多态的基础,多态是继承的目的!!!
N×M PK N+M
解耦具体依赖
4种方式
配置文件与反射技术
表驱动法
惯例优于配置
依赖注入
方案1-配置文件与反射技术
将反射技术与配置文件结合,在具体对象拥有共同抽象的前提下,通过配置文件获得具体的对象类型,然后利用反射创建相应对象.
必须知道的设计法则
找出应用中可能需要变化之处,把它们独立出来
您可能关注的文档
最近下载
- 2025年人教版三年级上册道德与法治精编知识点(新教材).pdf
- 一文读懂稳定币产业机会.pdf VIP
- 嘉兴市2024-2025学年高二(下期)期末考试 化学试题(含答案).pdf
- 义务教育版七年级全一册信息科技 第9课 数据传输有新意 教案(表格式).pdf VIP
- 采煤工作面沿空留巷作业规程.pdf VIP
- 2024年浙江评审卫生高级专业技术资格医学卫生刊物.docx VIP
- 新版CCAA备考-认证通用基础.pdf VIP
- 十年(23-22)高考化学真题分项汇编专题14 氧化还原反应相关计算(教师版).doc VIP
- (2025秋新版)人教版英语八上全册教案.pdf
- 新译林版高中英语选择性必修一全册课文原文及单词表.docx VIP
文档评论(0)