赞
踩
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
打个比方就像盖大厦和小木屋,当功能简单,函数和代码少时,我们能较轻松的直接上手;但如果是像大厦那样,功能复杂,需求可能变化且代码量大时,我们就不能直接上手就来,需要像建筑图纸那样提前规划设计,那设计模式就像软件(程序)的建筑图纸。
代码重用性
相同功能的代码,不用多次编写,降低冗余
可读性
编程规范性, 便于其他程序员的阅读和理解
可扩展性
当需要增加新的功能时,非常的方便,也称为可维护性
可靠性
当我们增加新的功能后,对原来的功能没有影响
使程序呈现高内聚,低耦合的特性
模块内部紧密,但模块间依赖小,一者出错不影响他者面向对象四大好处:可维护、可扩展、可复用、灵活性好。
单一职责原则(Single responsibility principle),即一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,以可能造成职责2执行错误,所需要将类A的粒度分解为A1、A2。
(1)降低类的复杂度,一个类只负责一项职责。
(2)提高类的可读性,可维护性
(3)降低变更引起的风险
(4)通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则
以交通工具的使用为例:
方案1,违法单一职责原则
- public class SingleResponsibility1 {
- public static void main(String[] args) {
- Vehicle vehicle = new Vehicle();
- vehicle.run("汽车");
- vehicle.run("摩托");
- vehicle.run("飞机");
- }
- }
- //方案1,违法单一职责原则
- class Vehicle{
- public void run(String vehicle){
- System.out.println(vehicle+"在公路上行驶");
- }
- }
方案2,遵守单一职责原则,但是改动很大,要将类分解,且修改客户端
- public class SingleResponsibility2 {
- public static void main(String[] args) {
- RoadVehicle roadVehice = new RoadVehicle();
- roadVehice.run("汽车");
- roadVehice.run("摩托");
-
- AirVehicle airVehicle = new AirVehicle();
- airVehicle.run("飞机");
- }
- }
- //方案2,遵守单一职责原则,但是改动很大,要将类分解,且修改客户端
- class RoadVehicle{
- public void run(String vehicle){
- System.out.println(vehicle+"在公路上行驶");
- }
- }
- class AirVehicle{
- public void run(String vehicle){
- System.out.println(vehicle+"在天空上行驶");
- }
- }
方案3,没有对原来类做大的修改,只是增加方法,虽然没有在类这个级别上遵守单一职责原则,但在方法级别上仍然遵守单一职责原则
- public class SingleResponsibility3 {
- public static void main(String[] args) {
- Vehicle2 vehicle = new Vehicle2();
- vehicle.run("汽车");
- vehicle.run("摩托");
- vehicle.runAir("飞机");
- }
- }
- //方案3,没有对原来类对大的修改,只是增加方法
- // 虽然没有在类这个级别上遵守单一职责原则,但在方法级别上仍然遵守单一职责原则
- class Vehicle2{
- public void run(String vehicle){
- System.out.println(vehicle+"在公路上行驶");
- }
- public void runAir(String vehicle){
- System.out.println(vehicle+"在天空上行驶");
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。