lh2020

设计模式的目的

编写软件过程中,程序员面临六大问题来自耦合性,内聚性以及可维护性,可扩展性和重用性,灵活性多方面挑战

1.代码重用性(相同功能的代码不用多次编写)

2.可读性(编程规范,便于其他程序员阅读和理解)

3.可扩展性(需要增加功能时非常方便称为可维护)

4.可靠性(增加新功能对原来的功能没有影响)

5.使程序呈现高内聚和低耦合

6.设计模式包含面向对象的精髓,懂了设计模式就懂了面向对象分析和设计(ooa/d)的精要

7.Scott Mayers 在其巨著《Effective C++》就曾经说过:C++老手和 C++新手的区别就是前者手背上有很多伤疤

设计模式七大原则

1.单一职责原则(对类来说一个类只负责一项职责,如果a类负责两个不同的职责,职责1,职责2需求变更更改职责a可能会导致职责2错误,所以将类a的粒度分解为a1和a2)

应用实例:

方法一:

package com.atguigu.principle.singleresponsibility

public class SingleResponsibility1 {

     public static void main(String[] args) {

    Vehicle vehicle = new Vehicle();

    vehicle.run("摩托车");

    vehicle.run("汽车");

    vehicle.run("飞机");

     }

}

// 交通工具类

// 1

// 1. 在方式 1 run 方法中,违反了单一职责原则

// 2. 解决的方案非常的简单,根据交通工具运行方法不同,分解成不同类即可

class Vehicle {

             public void run(String vehicle) { System.out.println(vehicle + " 在公路上运行....");

         }

}

方案二:

package com.atguigu.principle.singleresponsibility

public class SingleResponsibility2 {

       public static void main(String[] args) {

                         RoadVehicle roadVehicle = new RoadVehicle();

                         roadVehicle.run("摩托车");

                         roadVehicle.run("汽车");

                         AirVehicle airVehicle = new AirVehicle();

                         airVehicle.run("飞机");

            }

}

//方案 2 的分析

//1. 遵守单一职责原则

//2. 但是这样做的改动很大,即将类分解,同时修改客户端

//3. 改进:直接修改 Vehicle 类,改动的代码会比较少=>方案 3

class RoadVehicle {

               public void run(String vehicle) { System.out.println(vehicle + "公路运行");

        }

}

class AirVehicle {

            public void run(String vehicle) { System.out.println(vehicle + "天空运行");

     }

}

class WaterVehicle {

public void run(String vehicle) { System.out.println(vehicle + "水中运行");

            }

}

方案三:

package com.atguigu.principle.singleresponsibility;

public class SingleResponsibility3 {

       public static void main(String[] args) {

// TODO Auto-generated method stub Vehicle2 vehicle2 = new Vehicle2();

              vehicle2.run("汽车");

              vehicle2.runWater("轮船");

              vehicle2.runAir("飞机");

       }

}

//1. 这种修改方法没有对原来的类做大的修改,只是增加方法

//2. 这里虽然没有在类这个级别上遵守单一职责原则,但是在方法级别上,仍然是遵守单一职责

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 + " 在水中行....");

}

//方法 2.

//..

//..

//...

}

单一职责原则注意事项和细节

(1)降低类的复杂性,一个类只负责一项职责

(2)提高类的可读性,可维护性

(3)降低变更引起的风险

(4)通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则,只有类中方法足后少,可以在方法级别保持单一职责原则

2.接口隔离

 

3.依赖倒置

4.里氏替换

5.开闭原则

6.迪米特法则

7.合成复用原则

分类:

技术点:

相关文章:

  • 2021-06-10
  • 2022-03-07
  • 2021-12-16
  • 2022-01-03
猜你喜欢
  • 2022-12-23
  • 2021-04-19
  • 2022-01-18
  • 2022-12-23
  • 2021-09-10
相关资源
相似解决方案