什么是设计模式?

在我看来,设计模式就是在软件开发的过程中,对于重复出现的问题提出的一种高效的、通用的经过反复验证的问题解决方案。

设计模式六大基本原则

单一职责

就一个类而言,有且仅有一个能够引起他变化的原因。也就是说,这个类只干他应该干的事。

开闭原则

类、模块、方法可以扩展,但不可以修改。
当软件或者系统的需求发生改变的时候,应该尽量通过扩展的方式来实现,而不是修改已有的代码

里氏替换原则

所有引用其基类的地方,必须能够透明地使用其子类的对象。
子类对象可以在程序中替换其父类对象。
里氏替换的核心是抽象,抽象依赖于继承。而在面对对象中。
继承的优点:

  • 代码重用,减少了创建类的成本,所有的子类拥有父类同样的属性和方法。
  • 灵活性高,易于扩展。
    继承的缺点:
  • 继承是具有侵略性的,它会破坏封装,因为只要是继承,就必须拥有父类的属性和方法。
  • 可能造成子类代码的冗余,灵活性降低。

依赖倒置原则

高层模块不应该依赖于底层模块,两者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象。
Java 中的抽象类和接口都不能够直接实例话,实现接口的实现类和继承抽象类的就是细节。此时,调用方法的就是高层模块,功能或方法的声明就是抽象,具体的实现就是细节。依赖倒置在Java中就是模块之间的依赖通过抽象发生,而不是直接依赖于细节,实现类之间不发生直接依赖,他们之间的依赖是通过接口或抽象类发生的,提高了系统的可扩展性。

接口隔离原则

一个类对一个类的依赖建立在最小的接口上。
应该建立单一的接口,不要建立臃肿庞大的接口,接口的功能应该细化具体。对依赖的类定制,之提供给调用端需要的服务,才能建立最小的依赖关系,降低耦合,提高内聚。

迪米特原则

一个软件实体应该尽量少与其它的实体进行交互。
一个类应该对自己耦合的类和调用的类知道的越少越好。

  • 在类的划分上,应该创建松耦合的类,类之间的耦合度越低,越容易复用,一个处于松耦合的类进行修改,不会对依赖它的类造成太大的波动。
  • 在类的结构设计上,应该尽量降低其属性和方法的访问权限。
  • 在对其它类的引用上,一个类要对其它对象的引用要降到最低。