文章结构:
  1.前言
  2.设计原则
      3.设计模式
    3.1 创建型模式
    3.2 结构型模式
    3.3 行为型模式 

前言

设计原则和设计模式旨在帮助我们设计出一个可复用、可扩展、可维护的应用.

 设计原则:设计OR重构系统的指导方针.

 设计模式:解决某类问题性质有效的方法.

设计原则和设计模式要实现的目标是:在需求变动或者系统升级时,尽可能少的改变代码,尽可能多的实现新的功能.

设计原则是设计模式的"背后的故事",要深入理解设计模式必先深入理解设计原则.


 

设计原则

1.开闭原则(Open Close Principle)

Open for extension, closed for modifications.

对扩展开放,对修改关闭.

可以说开闭原则是所有原则中最核心的原则,它的定义就是可扩展性可维护性最好的阐释. 

2.依赖倒置原则(Dependency Inversion Principle)

Depend upon Abstractions. Don’t depend upon concretions.

依赖倒置原则强调面向接口编程,依赖于抽象而非具体.依赖倒置原则和开闭原则是内在相通的,一个强调扩展,一个是实现扩展最常用的机制.

3.接口隔离原则(Interface Segregation Principle)

Many client-specific interfaces are better than one general-purpose interface.

接口隔离原则强调:一个接口对应一个客户,避免用一个接口提供给多个客户提供服务.一个接口对应一个客户,当该客户的需求变动时,只需要变动它所对应的接口.体现了高内聚低耦合的思想.

4.单一职责原则(Single Responsibility Principle)

A class should have only one reason to change.

就一个类而言,应该只有一个引起他变化的原因.

也就是说,不要把变化原因各不相同的职责放在一起,因为不同的变化会影响到不相干的职责。一个类尽量做到了功能单一,单一职能的不是说职能多了我们实现不了,是为了后期的测试维护,每个类的很单一,我们找错误的时候就可以一步到位.添加新的功能的时候,也不用牵扯到很多的类.

5.里氏替换原则(Liskov’s Substitution Principle)

Derived types must be completely substitutable for their base types.

子类型必须能够替换它们的父类型.这个原则是对继承的一个约束.里氏替换原则很好理解,举个例子:mysql的java驱动必须遵守jdbc规范.

引用一个非常好的总结:开闭原则是总纲,它告诉我们对扩展开放,对修改关闭;依赖倒置原则告诉我们要面向接口编程;接口隔离原则告诉我们要在设计接口的时候要精简单一;单一职责原则告诉我们实现类要职责单一;里氏替换原则告诉我们不要破坏继承体系.

在实际开发中,我们应当尽量达到这些原则,而不是随时需要遵循这些原则.任何Java程序都有违反这些指导方针的地方.在合适的时候使用原则可以让我们的程序更富有弹性,但死板固执的应用这些原则会使程序更加复杂,事倍功半.


 

设计模式

   GOF将23设计模式种设计模式分为创建型、结构型、行为型3种类型.下面列出一些常见模式以及它们的应用实例.下面提到的模式实例的实现与书本上有所差距,相比模式的实现,我更关注的是模式的应用场景.

创建型模式

单例模式(Singleton):保证程序中一个类只有一个实例.

       应用实例:jdk中java.lang.Runtime

public class Runtime {
    /**
     * 类加载时初始化实例
     */
    private static Runtime currentRuntime = new Runtime();
    /**
     * 提供获取实例的方法
     */
    public static Runtime getRuntime() {
        return currentRuntime;
    }
    /** 私有化构造函数 */
private Runtime() {}
// 剩下的方法
View Code

相关文章:

  • 2021-07-12
  • 2021-11-09
猜你喜欢
  • 2022-12-23
  • 2021-11-30
  • 2021-08-08
  • 2021-11-20
  • 2021-12-02
  • 2022-02-22
  • 2021-12-12
相关资源
相似解决方案