概述
引言:本人这个设计模式课程的学习,也是看的别的讲师的课程来学习的,这个老师讲的设计模式的课程很不错。建议大家去听听。这里我只贴视频链接,不说是哪个老师和哪个培训机构,避免有打广告的嫌疑。
视频链接:https://www.bilibili.com/video/av57936239?from=search&seid=10749694492060434221
软件工程中,设计模式(designpattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(ErichGamma)等人在1990年代从建筑设计领域引入到计算机科学的。
编写软件过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重 用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好:
- 代码重用性(即:相同功能的代码,不用多次编写)
- 可读性(即:编程规范性,便于其他程序员的阅读和理解)
- 可扩展性(即:当需要增加新的功能时,非常的方便,称为可维护
- 可靠性(即:当我们增加新的功能后,对原来的功能没有影响)
- 使程序呈现高内聚,低耦合的特性
设计模式包含了面向对象的精髓,“懂了设计模式,你就懂了面向对象分析和设计 (OOA/D)的精要” 。设计模式是不依赖任何一种语言的,它是一种思想。
设计模式常用的七大原则有:
- 单一职责原则
- 接口隔离原则
- 依赖倒转(倒置)原则
- 里氏替换原则
- 开闭原则
- 迪米特法则
单一职责原则
单一职责,就是职责单一,拿一个类来说,即一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2。举个例子:
拿机动车举例,Vehicle 类里面有一个提供机动车行驶的方法:driver
class Vehicle {
public void driver(String vehicle) {
System.out.println(vehicle + " 在公路上运行....");
}
}
我们写main方法调用:
public static void main(String[] args) {
// TODO Auto-generated method stub
Vehicle vehicle = new Vehicle();
vehicle.driver("摩托车");
vehicle.driver("汽车");
vehicle.driver("飞机");
}
这里,摩托车和汽车都去调用这个driver方法,输出了在公路上行驶,那是没有错的。但是当飞机调用的时候,也输出同样的话,那明显是不对的。这个时候,就应该把原先的driver方法分离出来。分成两种职责:一种在公路上行驶,一种在天上飞:
这里实现方法级别的单一职责,如果是类级别的单一职责,那就新建一个类就行了。单一职责的代码比较简单,所以类级别的单一职责的代码就不贴出来了。
class Vehicle2 {
public void driverrun(String vehicle) {
//处理
System.out.println(vehicle + " 在公路上运行....");
}
public void skyrun(String vehicle) {
System.out.println(vehicle + " 在天空上运行....");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Vehicle2 vehicle2 = new Vehicle2();
vehicle2.driverrun("汽车");
vehicle2.skyrun("飞机");
}
这里虽然没有在类这个级别上遵守单一职责原则(如果在类级别上,就要新增一个类),但是在方法级别上,仍然是遵守单一职责。
单一职责原则注意事项和细节
- 降低类的复杂度,一个类只负责一项职责。
- 提高类的可读性,可维护性。
- 降低变更引起的风险 。
- 通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则。
最后
以上就是无语烧鹅为你收集整理的二十三种设计模式中的六大原则(一) 单一职责原则的全部内容,希望文章能够帮你解决二十三种设计模式中的六大原则(一) 单一职责原则所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复