面向对象编程的软件设计原则
2016-02-23 08:27
246 查看
在開始Android软件实际APP開始之前,我们须要对面向对象设计原则及设计模式做一个初步的了解。才干在以后的实战过程中,少走弯路。使我们的软件开发生涯感觉到快乐、轻松。好了,废话少说,咱们今天给大家一起探讨一下软OOP中的软件开发设计原则。这些东东都是OOP的设计精髓,他们蕴藏着前辈留下的产物。眼下。软件设计最基本原则有下面几种(总共同拥有11种):单一职责原则、开放封闭原则、依赖倒置原则、接口隔离原则和里氏替换(Liskov替换)原则
单一职责原则
就是一个类值做一件事情。引起它发生变化的仅仅有一个。
我们常常会听到一个词语“高内聚、低耦合”。我们将职责定义为引起变化的原因。以提高内聚性来降低引起变化的原因。
若是职责越多,耦合性就会越高;我们略微哪个地方有修改,都会波及到其它的类。
开放封闭原则
地方详细体如今:对扩展开发、对改动关闭。
什么意思呢?对扩展开放,意味着有新的需求或变化时,能够对现有代码进行扩展。以适应新的情况;对改动封闭。意味着类一旦设计完毕。就能够独立完毕其工作,而不要对其进行不论什么尝试的改动。
事实上,我们在实际的编程过程中,用的最多。
您想想:一般我们在设计的时候,我们会设计抽象类、接口(行为);然后详细的实现类是通过继承的方式;我们通过覆写的方式来编写不同详细的实现类的方法;这就是此设计原则的真实写照。
依赖倒置原则
其核心思想是:依赖于抽象。
详细而言就是高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于详细,详细依赖于抽象。当两个模块之间存在紧密的耦合关系时,最好的方法就是分离接口和实现:在依赖之间定义一个抽象的接口使得高层模块调用接口。而底层模块实现接口的定义,以此来有效控制耦合关系,达到依赖于抽象的设计目标。
抽象的稳定性决定了系统的稳定性,由于抽象是不变的,依赖于抽象是面向对象设计的精髓,也是依赖倒置原则的核心。依赖于抽象是一个通用的原则。而某些时候依赖于细节则是在所难免的,必须权衡在抽象和详细之间的取舍。方法不是一层不变的。依赖于抽象,就是对接口编程。不要对实现编程。
接口隔离原则
其核心思想是:使用多个小的专门的接口,而不要使用一个大的总接口。我们在设计接口的时候。详细而言,接口隔离原则体如今:接口应该是内聚的,应该避免“胖”接口。一个类对另外一个类的依赖应该建立在最小的接口上,不要强迫依赖不用的方法,这是一种接口污染。
里氏替换(Liskov替换)原则
不论什么基类能够出现的地方,子类一定能够出现。LSP是继承复用的基石。仅仅有当子类能够替换基类,软件单位的功能不受影响时,基类才干真正的被复用,而子类也能够在基类的基础上添加新的行为。Liskov替换原则,主要着眼于对抽象和多态建立在继承的基础上,因此仅仅有遵循了Liskov替换原则。才干保证继承复用是可靠地。实现的方法是面向接口编程:将公共部分抽象为基类接口或抽象类,通过Extract
Abstract Class。在子类中通过覆写父类的方法实现新的方式支持相同的职责。
单一职责原则
就是一个类值做一件事情。引起它发生变化的仅仅有一个。
我们常常会听到一个词语“高内聚、低耦合”。我们将职责定义为引起变化的原因。以提高内聚性来降低引起变化的原因。
若是职责越多,耦合性就会越高;我们略微哪个地方有修改,都会波及到其它的类。
开放封闭原则
地方详细体如今:对扩展开发、对改动关闭。
什么意思呢?对扩展开放,意味着有新的需求或变化时,能够对现有代码进行扩展。以适应新的情况;对改动封闭。意味着类一旦设计完毕。就能够独立完毕其工作,而不要对其进行不论什么尝试的改动。
事实上,我们在实际的编程过程中,用的最多。
您想想:一般我们在设计的时候,我们会设计抽象类、接口(行为);然后详细的实现类是通过继承的方式;我们通过覆写的方式来编写不同详细的实现类的方法;这就是此设计原则的真实写照。
依赖倒置原则
其核心思想是:依赖于抽象。
详细而言就是高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于详细,详细依赖于抽象。当两个模块之间存在紧密的耦合关系时,最好的方法就是分离接口和实现:在依赖之间定义一个抽象的接口使得高层模块调用接口。而底层模块实现接口的定义,以此来有效控制耦合关系,达到依赖于抽象的设计目标。
抽象的稳定性决定了系统的稳定性,由于抽象是不变的,依赖于抽象是面向对象设计的精髓,也是依赖倒置原则的核心。依赖于抽象是一个通用的原则。而某些时候依赖于细节则是在所难免的,必须权衡在抽象和详细之间的取舍。方法不是一层不变的。依赖于抽象,就是对接口编程。不要对实现编程。
接口隔离原则
其核心思想是:使用多个小的专门的接口,而不要使用一个大的总接口。我们在设计接口的时候。详细而言,接口隔离原则体如今:接口应该是内聚的,应该避免“胖”接口。一个类对另外一个类的依赖应该建立在最小的接口上,不要强迫依赖不用的方法,这是一种接口污染。
里氏替换(Liskov替换)原则
不论什么基类能够出现的地方,子类一定能够出现。LSP是继承复用的基石。仅仅有当子类能够替换基类,软件单位的功能不受影响时,基类才干真正的被复用,而子类也能够在基类的基础上添加新的行为。Liskov替换原则,主要着眼于对抽象和多态建立在继承的基础上,因此仅仅有遵循了Liskov替换原则。才干保证继承复用是可靠地。实现的方法是面向接口编程:将公共部分抽象为基类接口或抽象类,通过Extract
Abstract Class。在子类中通过覆写父类的方法实现新的方式支持相同的职责。
相关文章推荐
- javaji基础x3
- 《ASP.NET5》Windows 7下Visual Studio 2015安装记录
- C# 中的委托和事件
- 分析java程序中cpu占用过高的线程
- 腾讯视频真实下载地址获取教程(一段代码即可搞定)
- [python爬虫] Selenium爬取新浪微博内容及用户信息
- Struts2 pojo类中包含Date类型属性使用自定类型转换器
- python字典概述
- python字典概述
- 系统签名导入Eclipse中使用
- 异常 EventBusException:its super classes have no public methods with the @Subscribe annotation
- unix like编程中的signal()函数
- 简单的 struts2 action model & form 提交的演示
- Pyqt4学习笔记-对话框(更新ing)
- 图解python入门
- C++学习笔记3
- Struts2与XWork
- java找不到或无法加载主类
- Springmvc:前后端传参方式总结
- //logoImageView高度为父视图高度一半