应用程序系统基本设计原则——SOLID…
2016-02-26 17:02
357 查看
应用系统设计应该遵循一些的设计的基本原则,其实这些思想也是源于GOF的设计模式的总结,在创建一个低成本,高可用、高扩展性、低耦高内聚的应用程序,我们需要遵循的一套规范性的东西,简称SOLID,SOLID由可分为以下几点:
1、Single
Responsibility Principle(单一职责原则)
2、Open Close
Principle(开-闭原则)
3、Liskov Substitution
Principle(里氏代换原则)
4、Interface
Segregation Principle(接口分离原则)
5、Dependency
Inversion Principle(依赖反转原则)
简单介绍这几个原则:
1、单一职责原则:每个类应该只有一个独一无二的职责,或者说每个类只能有一个主要功能,每个类应该尽可能少的依赖其他类,这也体现了封装的概念。
2、开-闭原则:每个类,应该对“扩展”进行开放,而对“修改”进行封闭,也就是支持扩展,而不是支持修改,当然完全符合这个原则稍微有点难度,确
切的说是保证最小限度的修改代码来实现系统的功能扩展,比如:继承、设计模式中的几个创建型模式都是在尽量的解决此问题,而不是通过修改既有代码。
3、里氏替换原则:子类型必须能够替换掉他们的父类型。在一个软件实体如果使用的是一个父类的话,那么一定适合于其子类,而且他观察不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的子类,程序行为没有变化。
4、接口分离原则:接口的职责也应该是单一的,接口中应该包含哪些方法,需要进行严格的评估,如果其中某些方法的职责于接口的本身定义不相符合,则应该将其分离到其他接口中。类需要根据其调用所需要的不同接口类型,来暴露不同的接口,同样也是类单一职责的体现。
5、依赖反转原则:也叫依赖倒置原则,抽象不能依赖于具体,而具体则应该依赖抽象。类之间的直接依赖应该用抽象取代,这样做的一个优点是,我们可以
实现自上而下的设计:在下层的具体实现还没有确定的情况下,只要能够在抽象层将接口确定,能够完成上层的设计与开发,同时实现测试,实现领域模型的建立。
除了SOLID原则之外,还有几个关键的设计原则需要注意:
1、AOP(Aspect-oriented
Programming):面向切面编程,在系统设计中,我们在权限检查、操作管理、日志记录以及测量/计量等功能的实现时候,我们要将Cross-
Cutting(横切面)的代码从特定于应用程序的逻辑分离出来,将这些代码与应用系统业务系统逻辑混在一起回增加系统的复杂性,而且会扰乱程序的逻辑,
在OO思想大面积的关注于对象的封装,垂直体系的建立的影响下,面向切面无疑是一种填充。
2、关注点分离(Seperation of
Concerns,SOC):将应用系统分成多个字部分(子系统),各个部分之间的功能不要重复,其目的就是减少交互点,以实现高内聚和低耦合。
3、Don't Repeat
Youself(DRY):一个特定的功能只能在某个特定的组件中实现一次,同样的功能不要在多个组件中重复多次,责任分离
4、避免YAGNI(You Ain't Gonna Need It)效应:只考虑和设计必须的功能,避免过度设计。
1、Single
Responsibility Principle(单一职责原则)
2、Open Close
Principle(开-闭原则)
3、Liskov Substitution
Principle(里氏代换原则)
4、Interface
Segregation Principle(接口分离原则)
5、Dependency
Inversion Principle(依赖反转原则)
简单介绍这几个原则:
1、单一职责原则:每个类应该只有一个独一无二的职责,或者说每个类只能有一个主要功能,每个类应该尽可能少的依赖其他类,这也体现了封装的概念。
2、开-闭原则:每个类,应该对“扩展”进行开放,而对“修改”进行封闭,也就是支持扩展,而不是支持修改,当然完全符合这个原则稍微有点难度,确
切的说是保证最小限度的修改代码来实现系统的功能扩展,比如:继承、设计模式中的几个创建型模式都是在尽量的解决此问题,而不是通过修改既有代码。
3、里氏替换原则:子类型必须能够替换掉他们的父类型。在一个软件实体如果使用的是一个父类的话,那么一定适合于其子类,而且他观察不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的子类,程序行为没有变化。
4、接口分离原则:接口的职责也应该是单一的,接口中应该包含哪些方法,需要进行严格的评估,如果其中某些方法的职责于接口的本身定义不相符合,则应该将其分离到其他接口中。类需要根据其调用所需要的不同接口类型,来暴露不同的接口,同样也是类单一职责的体现。
5、依赖反转原则:也叫依赖倒置原则,抽象不能依赖于具体,而具体则应该依赖抽象。类之间的直接依赖应该用抽象取代,这样做的一个优点是,我们可以
实现自上而下的设计:在下层的具体实现还没有确定的情况下,只要能够在抽象层将接口确定,能够完成上层的设计与开发,同时实现测试,实现领域模型的建立。
除了SOLID原则之外,还有几个关键的设计原则需要注意:
1、AOP(Aspect-oriented
Programming):面向切面编程,在系统设计中,我们在权限检查、操作管理、日志记录以及测量/计量等功能的实现时候,我们要将Cross-
Cutting(横切面)的代码从特定于应用程序的逻辑分离出来,将这些代码与应用系统业务系统逻辑混在一起回增加系统的复杂性,而且会扰乱程序的逻辑,
在OO思想大面积的关注于对象的封装,垂直体系的建立的影响下,面向切面无疑是一种填充。
2、关注点分离(Seperation of
Concerns,SOC):将应用系统分成多个字部分(子系统),各个部分之间的功能不要重复,其目的就是减少交互点,以实现高内聚和低耦合。
3、Don't Repeat
Youself(DRY):一个特定的功能只能在某个特定的组件中实现一次,同样的功能不要在多个组件中重复多次,责任分离
4、避免YAGNI(You Ain't Gonna Need It)效应:只考虑和设计必须的功能,避免过度设计。
相关文章推荐
- IT程序员 我们究竟什么…
- 239. Sliding Window Maximum&滑动窗口的最大值
- Android edittext&nbsp…
- android如何查看cpu的占用率和内存泄漏
- listview嵌在scrollview里 只…
- Android客户端调用优酷视频播放器…
- 使用水平的scroolview …
- 我的博客今天2岁106天了,我领取了…
- android 实现图片加水印
- RevitAPI:监听文档改变ControlledApplication/Application.DocumentChanged事件
- 小技巧教你解决此windows副本不是正版的问题
- Git-版本管理
- gulp快速入门
- android 根据资源名称获取资源ID的方法
- iOS 开发切割圆角图片
- Android 浮动搜索框 searchable 使用(转)。
- 一个apk的activity 跳…
- android 四舍五入
- android achartengine&…
- android饼状图