一.设计模式—开篇

Posted zaijianba

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一.设计模式—开篇相关的知识,希望对你有一定的参考价值。

设计模式之:开篇

字数:1492字

阅读时间:4分钟

1.概览

设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。
? 1995 年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑,人称「GoF设计模式」

? 这 23 种设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性,以及类的关联关系和组合关系的充分理解。

? 当然,软件设计模式只是一个引导,在实际的软件开发中,必须根据具体的需求来选择:
对于简单的程序,可能写一个简单的算法要比引入某种设计模式更加容易;但是对于大型项目开发或者框架设计,用设计模式来组织代码显然更好。

2.设计模式分类

设计模式共分为三大类:

  1. ? 创建型模式(Creational Pattern)的主要特点是将对象的创建与使用分离,根据对象的创建与组合方式的不同,创建型模式可分为单例(Singleton)模式、原型(Prototype)模式、工厂方法(Factory Method)模式、抽象工厂(Abstract Factory)模式和建造者(Builder)模式 5 种。

  2. ? 结构型模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构,就像搭积木, 可以通过简单积木的组合形成复杂的、功能更为强大的结构。结构型模式可以分为类结构型模式对象结构型模式,也可分为代理模式(Proxy)、适配器模式(Adapter)、桥接模式(Bridge)、装饰模式 (Decorator )、外观模式(Facade)、享元模式(Flyweight)和组合模式(Composite)等 7 类。

  3. ? 行为型模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化,它是 GoF 设计模式中最为庞大的一类模式,包含以下 11 种:模板方法(Template Method)模式、策略(Strategy)模式、命令(Command)模式、职责链(Chain of Responsibility)模式、状态(State)模式、观察者(Observer)模式、中介者(Mediator)模式、迭代器(Iterator)模式、访问者(Visitor)模式、备忘录(Memento)模式、解释器(Interpreter)模式。

    ?

    ? 具体分类如下图所示:??

技术图片

3.六大原则

六大原则:

  1. 开闭原则(Open Closed Principle,OCP)软件实体应当对扩展开放,对修改关闭(总原则)

  2. 里氏替换原则(Liskov Substitution Principle,LSP)继承必须确保超类所拥有的性质在子类中仍然成立

  3. 依赖倒置原则(Dependence Inversion Principle,DIP)依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。其核心思想是:要面向接口编程,不要面向实现编程

  4. 单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。

  5. 接口隔离原则(Interface Segregation Principle,ISP)客户端不应该被迫依赖于它不使用的方法,一个类对另一个类的依赖应该建立在最小的接口上。

  6. 迪米特法则(Law of Demeter,LoD)又叫作最少知识原则,如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。

  7. 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。

    ? 七大原则如下图所示??:

技术图片

六大原则最后都是为了实现开闭原则。

4.总结

? 这是设计模式系列的开篇,也是对自己学习设计模式的做一个记录与总结,学习是一个不断巩固总结的过程,刚看完《大话设计模式》这本书,书中的知识似懂非懂,技术都是从看到写然后再到实际运用,希望借助写博客能更进一步掌握书中的知识。

? 因为博主不是科班毕业,大四才接触编程,基础薄弱,现在刚毕业两个月,从事的是软件开发行业,刚接触编程就被编程的魅力所吸引,互联网光鲜亮丽的背后都是由一串串代码构成,现在想想还是觉得很神奇,希望自己能在这条路上越走越远~

? 博客中如有不对的地方,请不吝指出!

技术图片

以上是关于一.设计模式—开篇的主要内容,如果未能解决你的问题,请参考以下文章

HeadFirst设计模式——开篇

JAVA设计模式——开篇

搞定系统设计 00:开篇

从底层谈WebGIS 原理设计与实现:开篇

设计模式开篇

设计模式开篇