
一.设计模式的本质:
什么是设计模式?为什么要有设计模式?设计模式的作用是什么?
这些问题一直困扰这我,我一直想不明白,后来我懂了?其实可以举个例子,
很久以前,没有活字印刷术的时候,就是雕版印刷,如果一个模板有几十个字,如果一个字刻错了或者要重新修改印刷的模板,那么整个模板就没有用了,就废弃了,意味着要重新做一个模板,这样面对变化的需求,简直太浪费资源了,太浪费时间了,太没有时间效率了,或许有小伙伴想到了活字印刷,活字印刷可以避免以上说的所有问题,而且复用性,扩展性,可维护性是全面彻底地提高,可以说是印刷界的一大革命了,其实万物的道理是相通的,以前的面向过程就相当于是调版印刷,而面向对象相当于是活字印刷,面向对象把类与类之间的关系降到很低很低,从而到达了类似活字印刷相对于雕版印刷的优势,其实这也就是面向对象对于面对过程的优势,其实很多人没有想明白,为什么要有面向对象,其实还是软件需求的发展,软件的需求越来越高,那个变化的需求越来越多,就类似于印刷一样,因为印刷的需求的增加,加之可能印刷时客户需要变更需求, 使得雕版印刷无法适应新的变更需求,所以就产生了活字印刷,所以面向对象之所以产生,还是因为软件的需求越来越大时和变更的需求越来越大,原有的面向过程无法满足人类的需求,面向对象就产生了,面向对象的精髓是设计模式,所以面向对象还是为了可扩展性,可复用性,可维护性,要做到这,必须符合软件的原则:高内聚低耦合
二.单一职责原则
1.简介:
一个类只负责一项职责,其目的是可维护,降低类与类之间的耦合性
2.案例演示:
交通工具类:
方案1:
package com.fan.principle.singleresponsibility;
public class SingSponbitity {
public static void main(String[] args) {
Vehicle vehicle = new Vehicle();
vehicle.run("摩托车");
vehicle.run("汽车");
vehicle.run("飞机");
}
}
class Vehicle{
public void run(String vehicle){
System.out.println(vehicle+"在公路上运行...");
}
}
分析:
run方法中违背了单一职责原则
因为飞机是在天上飞,这样就不符合了
解决方案:
就是根据交通工具运行的方法不同,分解成不同的类
方案2:
package com.fan.principle.singleresponsibility;
public class Singp2 {
public static void main(String[] args) {
Road road = new Road();
road.run("摩托");
air air = new air();
air.run("飞机");
Water water = new Water();
water.run("船");
}
}
class Road{
public void run(String vehicle){
System.out.println(vehicle+"公路运行");
}
}
class air{
public void run(String vehicle){
System.out.println(vehicle+"空中运行");
}
}
class Water{
public void run(String vehicle){
System.out.println(vehicle+"水中运行");
}
}
分析:
其遵守了单一职责原则,但是问题是分解的类太多,且类中的方法单一
解决方案:
就是在方法上保持单一职责原则,因为其一个类中的方法很少
方案3:
package com.fan.principle.singleresponsibility;
public class Singler3 {
public static void main(String[] args) {
Vehicle2 vehicle2 = new Vehicle2();
vehicle2.run("汽车");
vehicle2.runWater("轮船");
vehicle2.runAir("飞机");
}
}
class Vehicle2{
public void run(String vehicle){
System.out.println(vehicle+"在公路上运行...");
}
public void runAir(String vehicle){
System.out.println(vehicle+"在天空运行...");
}
public void runWater(String vehicle){
System.out.println(vehicle+"在水中运行..." );
}
}
分析:
其虽然没有在类与类之间没有遵守单一职责原则,但是在方法上遵守了单一职责原则,因为其方法少,所以还是一句话,要为了最后的目的而服务,为了高内聚低耦合而服务,为了一切开发的方便
3.注意的事项和细节
(1)降低类的复杂度,一个类只负责一个职责,如Userdao只负责跟用户有关的数据库操作
(2)提高类的可读性,可维护性
(3)降低变更引起的风险
(4)通常情况下,我们需要遵守单一职责原则,但是只有逻辑简单,才可以在代码级违法这个原则,只有类中的方法非常少时,才可以在方法级别保持单一职
责原则
三.自己的感悟:
单一职责原则就是把一个负责多个职责的类分解成多个只有一个职责的类,降低了耦合性,也好维护,如果一个类有多个职责,那么改动一个职责会不会影响到另外几个职责,另外几个职责会不会也要发生变化,所以才把其分解成多个只有一个职责的类,说白了还是为了应对变化的需求

本文探讨了设计模式的本质,通过印刷术的例子比喻面向对象与面向过程的区别,强调了设计模式在软件开发中的重要性,旨在提高可维护性、复用性和扩展性。单一职责原则作为面向对象设计的一个核心原则,要求一个类只承担一个职责,以降低类之间的耦合。文章通过交通工具类的案例分析,展示了如何遵循和违反这一原则,并提出在实际应用中需要权衡类的划分。遵循单一职责原则能降低变更风险,提高代码可读性和可维护性。
1082

被折叠的 条评论
为什么被折叠?



