- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE 1
面向对象设计原则和23个
设计模式的笔记
面向对象三大特点:
封装:
封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
不关注处理过程了,只有对象和其职能。
只允许设定的对象访问自身信息,其余私人信息隐藏。
作用:封装可以隐藏实现细节,使得代码模块化,局域化,简单;
继承:
继承的父类最好是接口,最好连属性都没有。
少用实现继承(库内使用较多),多用组合。
忘了多重继承,除非实现多接口。
作用:扩展已有代码模块;代码重用(库内使用较多),多态的基础
多态:
静态--编程时采用父类型-针对接口编程
动态--执行时才实际映射成具体的子类
作用:静态时针对接口编程,执行时才体现实际的效果
面向对象设计原则:
单一职责原则(SRP):
就一个类而言,应该仅有一个引起它变化的原因;当职责越多,耦合越多,易遭破坏
软件设计真正要做的就是发现职责并将这些职责相互分离
把职责分离到单独的类中,因为每一个类都是变化的轴线,当需求变化时,该变化会反映为类的职责的变化,如果一个类承担了多余一个的职责,那么引起他变化的原因就会有多个。职责定义为“变化的原因”。
如果一个类承担的职责过多,就等于把这些职责耦合在了一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力,这种耦合会导致脆弱的设计,当变化发生时,设计会受到意想不到的破坏。
另一方面,如果应用程序的变化方式总是导致这两个职责同时变化,那么就不必分离它们,实际分离它们就会导致不必要的复杂性的臭味。
SRP是所有原则中最简单的也是最难以正确应用的原则之一。
开放封闭原则:
软件实体应该可以扩展,但是不可修改。
软件要容易维护又不容易出问题的最好方法是多扩展,少修改。
无论模块多么封闭,都会有无法封闭的变化,事先构造抽象隔离这些变化。
面对新需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
OCP的关键是抽象,对于代码的改动是通过增加新代码进行的,而不是更改现有代码,因此他就不会引起像不遵循OCP原则那样的连锁改动。
通常,我们更愿意一直等到确实需要那些抽象时再把他放进去,“我们愿意被第一颗子弹射中,但是我们不会再被同一支枪射得其他子弹射中”。
可以按照以下的一些方法完成这项工作:
我们首先编写测试.测试描绘了系统的一种使用方法,通过首先编写测试,我们迫使系统成为可测试的,在一个具有可测试的.在一个具有可测试性的系统中发生变化时,我们可以坦然对之,因为我们已经构建了使用系统可测试的抽象,并且通常这些抽象中的许多都会隔离以后发生的其他种类的变化.
在许多方面,OCP都是面向对象设计的核心所在,遵循这个原则可以带来面向对象技术所声称的巨大好处(灵活,可重用,可维护性),然而,并不是说只要使用一种面向对象的语言就是遵循了这个原则,对于程序中的每个部分都肆意进行抽象同样不是一个好主意,正确的做法是,开发人员应该仅仅对程序中呈现出频繁变化的那部分作出抽象.拒绝不成熟的抽象和抽象本身一样重要.
依赖倒转原则
高层模块不应该依赖低层模块,两个都应该依赖于抽象
抽象不应该依赖于细节,细节应该依赖于抽象
即要针对接口编程,不要对实现编程
本应该是高层的策略设置模块去影响低层细节实现的模块的,包含高层业务规则的模块应该优先并独立于包含实现细节的模块,无论如何高层模块都不应该依赖于低层模块。
我们更希望能够重用的是高层策略模块,如果高层模块独立于底层模块,那么高层模块就能更容易的被重用,该原则是框架的设计核心原则。
所有结构良好的面向对象的架构都具有清晰的层次定义,每个层次通过一个定义良好的、受控制的接口向外提供一组内聚的服务。
每个较高的层次都为它所需要服务声明一个抽象接口,较低层次实现了这些抽象接口,每个高层类都通过接口使用下一层,这样高层就不依赖于低层。低层反而依赖于在高层中声明的抽象服务接口。
这种倒置不仅仅是依赖关系的倒置。它也是接口所有权的倒置。
依赖倒置可以应用于任何一个类向另一个类发送消息的地方。
违反DIP,高层策略没有和底层实现分离,抽象没有和具体细节分离,没有这种分离,高层策略就自动的依赖于低层模块,抽象就自动的依赖于具体细节。
里氏代换原则(LSP)
子类型必须替换掉它们的父类型。
适用于父类的一定适用于子类
LSP让我们得到一个非常重要的结论:一个模型,如果孤立的看,并不具有真正意义上的有效性,模型的有效性必须通过他的客户程序来表现。
如果一组类都支持一个公共的职责,那么它们就应该从一个公共的超类继承该职责。如果公共的超类还不存在,那么就创建一个,并把公共的职责放入其中,毕竟这样一个类的有用性是确定无疑的。
有一些简单的启发规则可以提供一些有关违反LSP的提示,这些规则都和以某种方式
您可能关注的文档
- 论中国梦与个人梦的实现基础研究[权威资料].doc
- 论中日幼儿教育的比较..doc
- 论主体性教育研究的深化 学术资料-教育学基础论文.doc
- 论转型期我国城市突发应急决策系统之构建.doc
- 旅行社网站营销建设推广SEO 策划书.docx
- 旅游局安全应急救援预案 .docx
- 铝电解铸造保温炉采用天然气加热的节能分析.doc
- 率吸收钳法测量射频同轴电缆屏蔽效能.doc
- 绿色盆栽创业计划书.doc
- 氯碱厂副产氢气的分离提纯方法.doc
- 急性肾功能衰竭综合征的肾血管介入性诊治4例报告并文献复习.docx
- 基于血流动力学、镇痛效果分析右美托咪定用于老年患者髋部骨折术的效果.docx
- 价格打骨折 小心统筹车险.docx
- 交通伤导致骨盆骨折合并多发损伤患者一体化救治体系的效果研究.docx
- 多层螺旋CT与DR片诊断肋骨骨折的临床分析.docx
- 儿童肱骨髁上骨折后尺神经损伤恢复的预测因素分析.docx
- 康复联合舒适护理在手骨折患者中的应用及对其依从性的影响.docx
- 机器人辅助老年股骨粗隆间骨折内固定术后康复.docx
- 超声辅助定位在老年髋部骨折患者椎管内麻醉中的应用:前瞻性随机对照研究.docx
- 两岸《经济日报》全面合作拉开帷幕.docx
最近下载
- 非银行金融机构资产风险分类指导原则(试行) .pdf VIP
- 胆囊结石胆石症防治中国专家共识解读PPT课件.pptx
- 三级安全技术交底定向钻.docx VIP
- 常微分期末复习试题(华南理工大学)常微分方程试卷1.doc VIP
- 天津科技大学__数据库系统试卷及答案.pdf VIP
- 黑布林阅读初一7《渔夫和他的灵魂》中文版.doc
- 8《突破自我设限》教学设计 北师大版心理健康七年级下册.pdf VIP
- 船用主配电板出厂检验.doc VIP
- 2023年临汾卫校附属医院临汾市第二人民医院护士招聘笔试高频试题摘选含答案解析.docx VIP
- 北师大版数学二年级上册 认识人民币 教学设计.docx VIP
原创力文档


文档评论(0)