设计模式之六大原则总结
来源:互联网 发布:淘宝售后客服语言技巧 编辑:程序博客网 时间:2024/05/19 15:42
最近在学习设计模式,简单的总结一下,那就是继承,多态、封装的灵活运用,说的再详细一点,那就是面向对象的六大原则的运用,所以今天特意把这些原则总结一下,然后再去观察设计模式到底是运用了六大原则的那些,六大原则,一个设计模式学习好的考试
单一职责原则(SingleResponsibility Principle)
概念:就一个类而言,应该仅有一个引起它变化的原因。因为如果一个类的职责过多就等于把一些功能耦合在一起,这种设计会使你的宝贝特别脆弱,当变化发生时,设计会遭受到你一向不到的破坏。
所以在设计时,首先就要判断是否应该分离出来,方法就是如果我们能想到多以一个的动机去改变一个类,那么这个类就是多以一个的职责。例如游戏逻辑和游戏界面,我们的游戏时时刻刻的都在更换,但是有些基本逻辑的不用变的,比如说植物大战僵尸,植物大战僵尸2,难道我们就因为更换了一下界面就要把所有的东西都改吗,这个时候你能理解单一职责的重要性了吧。
优点:增加了代码的复用性。
开放—封闭原则(Closed-Opened Principle)
概念:软件实体(类,模块,函数等等)可以扩展,但是不可以修改。开发-封闭原则的原理是希望我们在设计事就要考虑的周全,尽量在有新的需求的时候不要修改原来的类,而是通过增加新的类来满足客户的需求。
设计时,对于变化时,我们可以采取创建抽象来隔离同类的变化,这样防止以后维护的的难度和费用等问题的出现。
优点:开放-封闭原则是面向对象的核心部分,如果一个程序始终按照开放-封闭原则开发,那么也就增加了系统的可维护性,可扩展性,可复用性,和灵活性。
依赖倒转原则(DependenceInversion Principle)
概念:高层模块不应该依赖低层模块,两个都应该依赖抽象。抽象不应该依赖细节,细节应该依赖于抽象。
高层模块依赖低层模块就是说比如我们要访问数据库时,都是调用事先编好的函数,这些函数就是低层模块,但是我们做业务逻辑的高层模块都是一样的,如果高层依赖于低层,那么也就无法是实现它的复用。
通俗点就是依赖倒转原则让模块谁也不依赖谁,除了约定的接口,大家都可以灵活自如。
优点:所有的依赖关系都终止于抽象类或者接口。增强了代码的灵活性。
迪米特法则(Law ofDemeter)
概念:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用关系。
这个原则不仅在软件中实现了松耦合的现象,在现实中也是非常有用的,现在的农民工不是经常要不到工资,总是被各种理由去推脱这个事自己管不了,如果有一个中间者,那么事情是不是就简单多了呢。
里氏代换原则(Liskov Substitution Principle,简称LSP)
概念:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它觉察不出父类对象和子类对象的区别,也就是说,在软件里,把父类都替换成他的子类,程序也不会有什么变化。合成聚合复用原则
概念:尽量使用合成/聚合,尽量不使用类继承。
合成聚合是“has a”的关系,而继承是“is a”的关系。由于继承是一中强耦合的结构,父类变,子类必变。所以不是“is a”关系,我们一般不要用继承。优先使用合成聚合复用原则,有助于保持每个类的封装,降低继承的层次。
- 设计模式之六大原则总结
- 设计模式六大原则总结
- 设计模式六大原则总结
- 设计模式六大原则----------总结
- 设计模式六大原则总结
- 设计模式六大原则之----迪米特、开闭原则(六大原则简单总结)
- 设计模式之六大原则
- 设计模式之六大原则
- 设计模式之六大原则
- 设计模式之六大原则
- 设计模式之六大原则
- 设计模式之六大原则
- 设计模式之六大原则
- 设计模式之-----六大原则
- 设计模式之六大原则
- 设计模式之六大原则
- 设计模式之六大原则
- 设计模式之六大原则
- 平台符合性检测
- codeforce D. Password
- Cocos2dx------touch事件
- LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- Oracle RMAN Migrate Database to RAC from Netbackup Tape by LAN-FREE
- 设计模式之六大原则总结
- 分公司=一部门——组合模式
- 网站的标题定位的重要性
- <PY><core python programming 笔记>C1 概述
- 操作系统学习笔记——Mach, Monolithic kernel, Microkernels, Exokernel
- Expectation Maximization Algorithm(EM)算法
- V4L2驱动程序架构
- UVA-11234
- java--多线程实现计数器