设计模式有哪些(设计模式简述分析)

seoxin 06-07 10:30 13次浏览

「代码也可以像诗一样优雅」

几年的开发工作过程中,接手过很多项目。有时候会感叹原来代码还可以这样写,逻辑清晰,易扩展;从头到尾理下来完全就能理解作者的思路。而有的代码就显得不是那么友好了,仿佛掉进了S山,无从下手,云里雾里的。可以说,开发是一个不断学习他人优秀习惯与自我钻研的过程。算法、设计模式、业务抽象能力等等,这些决定了是否能写出像「诗」一样的代码。

经常Review以前的代码,感觉写的很烂,充斥着if else各种逻辑揉杂在一起。当然排除客观存在的因素:如项目赶工期,需求一个接一个,团队协作只能按照同事的现有实现续写等等。和很多开发人员一样,当拿到一个需求时第一想到的是先实现功能再说。行内共识能跑就行,没有真正考虑过以后的扩展问题,对业务的拆分同样做得不够。

「设计模式」

  1. 什么是设计模式?
  • 在软件工程中,设计模式Design Patterns是对软件设计中普遍存在的各种问题,所提出的解决方案。这个术语是由埃里希·伽马(Erich Gamma)等人在1990年代从建筑领域引入到计算机科学的。设计模式并不是直接用来完成代码的编写,而是描述在各种不同的情况下,解决一种或者一类问题的方案。面向对象设计模式通常以类别或者对象来描述其中的关系与相互作用,不涉及特定的类别或对象。设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免耦合以适应不确定的变化的能力。

2.划分

一般的可以将设计模式分为几个大类:创建型模式、结构型模式、行为型模式。「常见的23种设计模式」

  • 创建型模式:单例模式(Singleton)、原型模式(Prototype)、抽象工厂模式(AbstractFactory)、工厂方法模式(Factory Method)、建造者模式(Builder)。核心焦点在于如何创建对象,将对象的使用与创建相隔离
  • 结构型模式:适配器模式(Adapter)、外观模式(Facade)、组合模式(Composite)、享元模式(Flyweight)、桥接模式(Bridge)、代理模式(Proxy)、装饰模式(Decorator)。如何组合各种对象、使结构更加灵活
  • 行为型模式:策略模式(Strategy)、责任链模式(Chain of Responsibility)、状态模式(State)、观察者模式(Oberver)、中介者模式(Mediator)、迭代器模式(Iterator)、备忘录模式(Memento)、访问者模式(Visitor)、命令模式(Command)、模版方法模式(Template Method)、解释器模式(Interpreter)。主要关注点为类或者对象之间的相互协同来完成较复杂的任务、以及职责的分配问题。

3.使用

  • 设计模式的运用绝对不是生搬硬套的,但是使用的前提必须是对基本的23种设计模式有较为深刻的理解,有时候单一的设计模式并不能解决某个具体的问题,这就需要多种模式的组合来实现。当然设计模式的使用绝对不是为了设计而设计,很可能适得其反。