设计模式入门

前言

  俗话说,好记性也不如烂笔头,最近开始阅读设计模式这方面的书籍,算是借此开个好头,把一些理解的和不太理解的都写下来。本人工作时间不长,经验、资历各方面也还比较欠缺,但目前来说还是很有决心多看一点好书,做好一些事情的。

  去年就入手了好几本设计模式类的书籍,有《大话设计模式》、《设计模式之禅》和《Head First设计模式》,不过直到最近也是一次都没翻开过。前不久决心从《大话设计模式》看起,并开始记录这个设计模式入门。

百科

设计原则

  面向对象编程中一般遵循以下几个原则,设计模式就是为了实现这些原则,从而达到了代码复用、提高可维护性的目的:

  1. 开放封闭原则 (OCP, Open Closed Principle)
  • 对扩展开放,对更改封闭
  1. 里氏替换原则 (LSP, Liskov Substitution Principle)
  • 子类型必须能够替换掉它们的父类型
  1. 依赖倒转原则 (DIP, Dependency Inversion Principle)
  • 依赖抽象而不依赖于具体,高层模块不能依赖低层
  1. 接口隔离原则 (ISP, Interface Segregation Principle)
  • 使用多个隔离的接口,比使用单个接口要好,降低类之间的耦合
  1. 单一职责原则 (SRP, Single Responsiblity Principle)
  • 就一个类而言,应该只有一个引起它变化的原因
  1. 合成/聚合复用原则 (CARP, Composite/Aggregate Reuse Principle)
  • 尽量使用合成/聚合,而不是使用类继承
  1. 最小知识原则,也叫迪米特法则 (PLK, Principle of Least Knowledge)
  • 实体应尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立

设计模式

GOF在《Design Patterns: Elements of Reusable Object-Oriented Software》(《设计模式:可复用面向对象软件的基础》)一书中将设计模式划分为三种类型,共计23种:

  • 创建型(5种):单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式;
  • 结构型(7种):适配器模式、装饰器模式、桥接模式、组合模式、外观模式、享元模式、代理模式;
  • 行为型(11种):模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、责任链模式、访问者模式。

关系图

设计模式关系图

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python3

python3--python的出生与应用

python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心...

18120
来自专栏编程一生

架构师之路--从原理角度来分析性能

  埃及艳后Cleopatra,很小的时候看过妈妈买的一本书里把她的名字翻译成克娄巴特拉,里面有很多描写她美貌的场景描写。然而这个以美貌著称的奇女子,我看到书里...

9720
来自专栏Java后端技术栈

我是 SPI,我让框架更加优雅了!

自从上次小黑进入公司的架构组之后,小黑就承担起整个公司底层框架的开发工作。就在刚刚,小黑又接到一个任务:做一个通用的歌曲信息解析框架。即输入歌曲数据,之后返回该...

12020
来自专栏大数据钻研

Java高级软件工程师面试考纲

如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构、算法、网络、操作系统等知识。因此本文不会讲解具体的技术,笔者综合自...

355140
来自专栏令仔很忙

Spring从入门到精通(一)----IoC(控制反转)

在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过相互合作,最终实现系统的业务逻辑。

11020
来自专栏代码世界

6大设计原则总结

6大设计原则总结 一、单一职责原则  单一职责原则:英文名称是Single Responsiblity Principle,简称是SRP。定义:应该有且仅有一个...

30090
来自专栏大数据文摘

史上最强算法论战:请不要嘻哈,这是哈希

27360
来自专栏hbbliyong

设计模式学习--面向对象的5条设计原则之依赖倒置原则--DIP

一、DIP简介(DIP--Dependency Inversion Principle): 1、高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 2、抽象不...

37580
来自专栏微信公众号:Java团长

Java基础05 实施接口

在Java基础04 封装与接口中,private关键字封装了对象的内部成员。经过封装,产品隐藏了内部细节,只提供给用户接口(interface)。

9620
来自专栏恰童鞋骚年

【整理】待毕业.Net码农就业求职储备

声明:本文题目来源于互联网,仅供即将从学校毕业的.Net码农(当然,我本人也是菜逼一个)学习之用。当然,学习了这些题目不一定会拿到offer,但是针对就业求职做...

21330

扫码关注云+社区

领取腾讯云代金券