设计模式简介


设计模式简介

什么是设计模式?

设计模式是指在软件开发过程中对经验的总结和提炼,是被反复使用的一种解决特定问题的思路和方式。

设计模式是从代码结构的角度来考虑问题,更涵盖的是如何组织代码、类之间的关系以及对象的调用等方面的问题。设计模式并不是一种具体的算法或代码实现,更多的是一种思想和理念。

为什么要使用设计模式?

设计模式可以提炼经验、吸取教训,使得代码更加稳定、实现更优化、更易维护、更易扩展、更易于重用、降低代码的复杂度等等。

设计模式不仅可以帮助我们提升软件开发的效率,同时也可以提高代码的可读性和可维护性,从而节省了时间和人力成本。

常见的设计模式分类

设计模式根据其使用方式和目的的不同,可以大致分为三类,分别是创建型模式、结构型模式和行为型模式。

创建型模式

创建型模式主要用于创建对象。如工厂模式、单例模式、建造者模式和原型模式等。

工厂模式可以根据客户的需求,动态的创建相应的对象。单例模式用于保证一个类只有一个实例对象,并提供对该实例的全局访问。建造者模式将一个复杂对象的构建与表示分离,可以使得同样的构建过程可以创建不同的表示。原型模式使用Clone方式复制对象,来创建新的对象。

结构型模式

结构型模式主要用于处理类或对象之间的关系,如适配器模式、装饰器模式、组合模式、外观模式、享元模式和桥接模式等。

适配器模式用于兼容不兼容的对象。装饰器模式动态地给对象添加一些功能。组合模式用于将对象组合成树形结构,可以递归访问组合对象中的每一个元素。外观模式为复杂的子系统提供一个简单接口。享元模式用于共享细粒度对象,减少系统的内存占用。桥接模式分离实现和抽象,从而可以动态的改变实现。

行为型模式

行为型模式主要用于管理类或对象的算法和职责,要达到控制类或对象的复杂度和集中业务逻辑的目的。如责任链模式、命令模式、迭代器模式、中介者模式、备忘录模式、解释器模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式等。

责任链模式用于把一个请求处理流程分成多个处理步骤,从而降低处理步骤的复杂度。命令模式用于将请求封装成对象,从而实现不同请求的队列和日志,最大限度的提高可扩展性。迭代器模式用于提供一个方法顺序访问一个聚合对象的各个元素。中介者模式用于定义对象间的行为,将各对象间的通信及合作封装在一个中介对象中,从而使各对象间不再需要显式的相互引用,降低他们之间的语义耦合。备忘录模式用于在不破坏对象的封装性的前提下,保持对象的内部状态,以实现撤销和重做的功能。解释器模式用于定义一种语法解析的结构,分析特定文法对应的语言,并实现对语言的解释。观察者模式用于建立对象和对象之间的一种依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。状态模式用于升级包含状态的对象,从而实现状态之间的切换、客户端上下文无关性的维护和可扩展性。策略模式用于定义一系列算法,并将它们封装成一个纯粹的抽象接口,以便于在上下文环境类中随时切换使用。模板方法模式用于定义一个基本操作框架,然后将某些步骤的具体实现留给子类来完成。访问者模式用于表示一个作用于某个对象结构中的各个元素的操作,可以使得操作算法可以自由地变化,而不影响到元素类的结构。