我们继续架构师进阶之独孤九剑进阶,目前我们仍然在第一阶段:程序设计和开发环节。

设计模式不仅仅只是一种规范,更多的是一种设计思路和经验总结,目的只有一个:提高你高质量编码的能力。以下主要分为三个环节:为什么要用设计模式、设计模式的分类,以及最后推荐大家三本设计模式相关的书籍,希望对你有所帮助。

为什么要使用设计模式

1、设计模式是前人根据经验总结出来的,使用设计模式,就相当于是站在了前人的肩膀上。

2、设计模式使程序易读。熟悉设计模式的人应该能够很容易读懂运用设计模式编写的程序。

3、设计模式能使编写的程序具有良好的可扩展性,满足系统设计的开闭原则。比如策略模式,就是将不同的算法封装在子类中,在需要添加新的算法时,只需添加新的子类,实现规定的接口,即可在不改变现有系统源码的情况下加入新的系统行为。

4、设计模式能降低系统中类与类之间的耦合度。比如工厂模式,使依赖类只需知道被依赖类所实现的接口或继承的抽象类,使依赖类与被依赖类之间的耦合度降低。

5、设计模式能提高代码的重用度。比如适配器模式,就能将系统中已经存在的符合新需求的功能代码兼容新的需求提出的接口 。

6、设计模式能为常见的一些问题提供现成的解决方案。

7、设计模式增加了重用代码的方式。比如装饰器模式,在不使用继承的前提下重用系统中已存在的代码。

设计模式分类和作用

1.总体来说设计模式分为三大类:

2.创建型模式的作用:

创建型模式,顾名思义就是创建对象的模式,对对象实例化过程进行了抽象。它们帮助一个系统独立于如何创建、组合和表示它的那些对象。

3.创建型模式,共五种:

  • 工厂方法模式

  • 抽象工厂模式

  • 单例模式

  • 建造者模式

  • 原型模式

1)工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,也就是将创建工作推迟到子类来完成。

2)抽象工厂模式:提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们(指的是这些相关或者相互依赖的对象)的具体的类。

3)生成器模式:将一个复杂对象的构建和它的表示相分离,使得同样的构建过程可以创建出不同的表示。

4)原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

5)单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。换句话来说就是,单例模式通过将单例类的构造器访问修饰符设置为private,禁止客户直接通过new的方式来实例化单例类;与此同时,单例类提供一个静态访问点来获取到通过内部创建出的唯一单例类对象。

4.一般创建型设计模式面试必问:

建议以下四类都熟练掌握

  • 工厂方法模式

  • 抽象工厂模式

  • 单例模式

  • 建造者模式

5.结构型模式,共七种:

  • 适配器模式

  • 装饰器模式

  • 代理模式

  • 外观模式

  • 桥接模式

  • 组合模式

  • 享元模式

6.结构型模式的作用:

结构型模式主要用于描述如何组合类和对象以获得更大的结构。其中,结构型类模式采用继承机制来组合接口和实现,而结构型对象模式则采用组合/聚合方式来组合对象以实现新功能,因为它可以在运行时刻改变对象组合关系,所以对象组合方式具有更大的灵活性,这种机制是无法通过静态类组合来实现的。

7.结构型模式简介:

1.适配器模式:将一个类的接口转换成客户希望的另外一种接口,这样就能实现已有接口的复用。适配器主要有类适配器和对象适配器两种实现方式,通常情况下,推荐优先使用对象适配器方式。

2.桥接模式:将抽象部分与实现部分分离,使它们都可以独立地变化。它主要用于应对多维度变化点问题,通过对象组合的方式,可以极大地减少子类的数目,同时还能让不同维度独立扩展变化。

3.组合模式:将对象组合成树形结构以表示“整合-部分”的层次结构,从而使得用户对单个对象和组合对象的使用具有一致性,也就是客户端能够透明地无区别地操作两者。

4.装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更为灵活。

5.外观模式:为子系统中的一组接口提供一个一致的接口,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。这样原来需要客户直接与复杂的子系统打交道、交互,现在这一过程将完全将交由外观对象来完成,极大地方便了客户端的调用。

6.享元模式:运用共享技术有效地支持大量细粒度的对象。享元模式关键是将对象的内部状态和外部状态分离,尽可能地对“稳定”的内部状态进行共享,而将会随运用场景而改变的状态通过外部状态传入。

7.代理模式:为其他对象提供一种代理以控制对这个对象的访问。主要是在客户端和目标对象间增加一层间接层,通过这个间接层来完成对目标对象的种种控制操作,所以也就形成了不同功能类型的代理呢,比如远程代理、保护代理和虚代理等等。

8.行为型模式,共十一种:

  • 策略模式

  • 模板方法模式

  • 观察者模式

  • 迭代子模式

  • 责任链模式

  • 命令模式

  • 备忘录模式

  • 状态模式

  • 访问者模式

  • 中介者模式

  • 解释器模式

9.行为模式的作用:

行为型模式设计到算法和对象间的职责分配,不仅描述对象或类的模式,还描述它们之间的通信方式,刻划了运行时难以跟踪的复杂的控制流,它们将你的注意力从控制流转移到对象间的关系上来。

设计模式书籍推荐

1.第一本:Head First设计模适合式

适合:设计模式入门

2.第二本:设计模式

适合:有一定的设计模式基础之后再看

3.第三本:敏捷软件开发

适合:对设计模式以及敏捷的了解,名字叫敏捷软件开发,实则主要讲解了大量设计模式。

推荐以上的三本设计模式相关的书籍,顺序可以从上往下看,出入门到深入,也许效果会更好。


架构师进阶之独孤九剑:设计模式详解相关推荐

  1. java架构师进阶之独孤九剑(一)-算法思想与经典算法

    " 这是整个架构师连载系列,分为9大步骤,我们现在还在第一个步骤:程序设计和开发->数据结构与算法. 我们今天讲解重点讲解算法. 算法思想 1 贪心思想 顾名思义,贪心算法总是作出在当 ...

  2. java架构师进阶之独孤九剑:数据结构以及书籍推荐

    这是整个java架构师连载系列,分为9大步骤,我们现在还在第一个步骤:程序设计和开发->数据结构与算法. " 如果说 Java 是自动档轿车,C 就是手动档吉普.数据结构呢?是变速箱的 ...

  3. Java进阶 23种设计模式 详解+应用+实例代码

    文章目录 前言 设计模式六大原则 1.单一原则 (1) 概念 (2) 优点 2.开闭原则 (1) 概念 3.里氏替换原则 (1) 概念 4.依赖倒置原则 (1) 概念 (2) 作用 5.接口隔离原则 ...

  4. java架构师进阶独孤九剑系列(一):数据结构与算法

    " 架构师进阶系列之独孤九剑,这套秘籍如果你能完整学会,年薪至少60万起,今天是架构师进阶连载开启篇. Java程序员成长为架构师进阶步骤 未来我会用1-2个月在实战为大家讲解架构师的九大必 ...

  5. 云架构师进阶攻略(1)

    此文已由作者刘超授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.架构的三个维度和六个层面 1.1.三大架构 在互联网时代,要做好一个合格的云架构师,需要熟悉三大架构. 第 ...

  6. Java架构师,大数据架构师,高并发设计模式,机器学习知识点分享

    第一章:java精品课程目录大全 1.亿级流量电商详情页系统的大型高并发与高可用缓存架构实战 1课程介绍以及高并发高可用复杂系统中的缓存架构有哪些东西?32分钟 2基于大型电商网站中的商品详情页系统贯 ...

  7. Javascript常用的设计模式详解

    Javascript常用的设计模式详解 阅读目录 一:理解工厂模式 二:理解单体模式 三:理解模块模式 四:理解代理模式 五:理解职责链模式 六:命令模式的理解: 七:模板方法模式 八:理解javas ...

  8. Javascript设计模式详解

    Javascript常用的设计模式详解 阅读目录 一:理解工厂模式 二:理解单体模式 三:理解模块模式 四:理解代理模式 五:理解职责链模式 六:命令模式的理解: 七:模板方法模式 八:理解javas ...

  9. iOS中MVC等设计模式详解

    iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计 ...

最新文章

  1. 电信的 DNS 服务器地址
  2. 云计算为企业实现业务成果开辟了新的机遇
  3. python微型web框架flask介绍
  4. java数组元素相加_数组元素相加
  5. 幼儿使用计算机需要注意事项,儿童玩电脑注意事项
  6. Eclipse3.2下JFace和SWT工程环境配置方法
  7. 7-13 简单计算器 (25 分)
  8. 聊城市计算机专业,聊城市关于2018年下半年计算机技术与软件专业技术资格(水平)考试考务工作有关问题的通知...
  9. OkHttp和Volley对比
  10. .Net Micro Framework研究—串口部署释疑
  11. 个人中心html界面设计,APP个人中心页面设计
  12. ad采样的符号位_AD采样后数据如何在FPGA中转化为有符号数
  13. 小米 线刷 android,小米10 Android 11 Beta 1线刷包已放出,安卓11/MIUI 12二选一
  14. windows10安装NVIDIA显卡驱动+cuda10.0教程
  15. 天翼云携手华为,强强联合,共创数据存储新生态
  16. SAP AFS ARUN分货操作只争对销售订单行项目上的库存地进行
  17. java 手电筒 电池_android 手电筒的实现
  18. MATLAB中安装Yalmip及Cplex
  19. MFC中使用CPropertySheet实现Tab Control
  20. 易语言编程-远程封包拦截与发送技术

热门文章

  1. Javascript实现合并单元格
  2. 【干货】同步与互斥的失败例子
  3. 用指针实现高低位倒序,疯了吧
  4. html如何实现切换效果,纯CSS实现页签切换效果
  5. python turtle 怎么设计背景颜色_Python, turtle海龟作图,如何添加背景图片?
  6. 要多大内存才满足_佛龛的尺寸要多大?
  7. 【Pytorch神经网络实战案例】06 逻辑回归拟合二维数据
  8. LeetCode MySQL 1126. 查询活跃业务
  9. LeetCode 1072. 按列翻转得到最大值等行数(查找相同的模式,哈希计数)
  10. LeetCode 526. 优美的排列(回溯)