我是靠谱客的博主 无心水壶,最近开发中收集的这篇文章主要介绍13.DesignPattern设计模式(by-朝夕)设计模式三大类1.创建型设计模式2.结构型3.行为型设计模式总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

DesignPattern

  • 设计模式三大类
    • 设计模式相关
    • 类和类之间的关系
    • 类横向关系解析
    • 类和类的强弱关系
  • 1.创建型设计模式
    • 单例模式
    • 单例双判断锁
    • 饿汉式单例模式
    • 单例模式
    • 单例模式的应用
    • 原型模式
    • 原型模式的特点
    • 简单工厂
    • 抽象工厂
    • 建造者模式
  • 2.结构型
    • 结构型—适配器模式
    • 结构型—适配器模式
    • 适配器模式的核心套路
    • 结构型-代理模式
    • 结构型-装饰器模式模式
    • 装饰器模式-番外篇
  • 3.行为型设计模式
    • 观察者模式
    • 责任链模式
    • 请假场景
      • 审批逻辑
    • 责任链模式
      • 使用场景
    • 模板方法模式
      • 银行客户端
    • 迭代器模式
  • 总结

设计模式三大类

设计模式三大类

设计模式相关

  1. 单一职责,里氏替换原则,依赖倒置原则,迪米特法则,接口隔离原则开闭原则。
  2. 设计模式其实就是在面向对象语言程序开发设计中,解决各种具体问题总结的具体办法,沉淀下来;

类和类之间的关系

类与类之间关系

类横向关系解析

  • 依赖关系: A类的变化引起了B类的变化,那么就表示B依赖于A; 临时性!单向的; 一种比较淡的关系;
  • 关联关系:多个类之间语义上的依赖关系,双向关系;老师和同学们是朋友关系;同学们和老师也是朋友!
  • 聚合关系:整体和部分的关系;整体包含个体,分开也是独立的个体; 车和发动机!
  • 组合关系:组合也是关联关系的一种特别方式;主要在包含关系—强聚合关系;人和心脏! 非常紧密;

类和类的强弱关系

继承≈实现>组合>聚合>关联>依赖
结构型设计模式常规套路:组合优于继承!

1.创建型设计模式

单例模式

单例模式(SingletonPattern): 单例,就是整个程序中有且仅有一个实例,该类负责创建自己的对象,同时确保只有一个对象被创建!
1.私有化构造函数;
2.对外提供获取对象的实例的方法,公开的静态方法;
3.提供静态变量,存储对象的实例;

单例双判断锁

单例
双判断+锁的经典实现、懒汉式写法。 必须要调用CreateInstance方法才能创建实例
在这里插入图片描述

饿汉式单例模式

饿汉式
在这里插入图片描述
单例模式:并非线程安全;
同一个实例同一个方法跟线程安全没关系;

单例模式

在这里插入图片描述

单例模式的应用

配置文件的读取;
数据库连接池;
线程池;
流水号生成器;

原型模式

原型模式(Prototype Pattern):是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式;
专门用来快速生产对象!
内存拷贝:MemberwiseClone
在这里插入图片描述

原型模式的特点

和单例不一样,并不是同一个实例,而是通过内存拷贝.所以可以快速创建对象,但是不同执行构造函数,直接内存复制,生产新的对象!

简单工厂

简单工厂模式(SimpleFactoryPattern): 是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
在这里插入图片描述

  • 工厂降低对细节的依赖:反射+配置文件;工厂中也没有细节了!
  • 程序的可配置,可扩展!代码更加稳定,配置文件修改即可修改功能。
  • 工厂方法模式(FactoryMethodPattern) :通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。
    1.屏蔽细节,对象怎么创建上端不用知道;
    2.针对于不同的场景可以替换扩展工厂;
    典型场景:Asp.Net MVC控制器工厂;

抽象工厂

  • 抽象工厂模式(AbstractFactoryPattern):在抽象工厂模式中,接口是负责创建一个相关对象的工厂。每个生成的工厂都能按照工厂模式提供对象。
    个人见解:工厂+约束!

  • 倾斜的可扩展性设计:不能完全的支持扩展!抽象工厂的工厂是可以随意扩展,增加A工厂 B工厂但是工厂里面生成的对象是不能扩展的,一旦增加个产品,全部的工厂都得改动了

建造者模式

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

2.结构型

结构型—适配器模式

  • 适配器模式(AdapterPattern):把一个接口转换成客户希望的另一个接口!让接口不兼容的那些类可以一起工作。又名:包装器-Wrapper
  • 笔记本电源适配器;国内用电电压220V 笔记本:50V;
  • 来一插口转换器:iphone:港版,美版,国行;
  • 适配器就是把不能一起使用的东西,通过适配,变 的可以一起使用;
  • 类适配器
  • 对象适配器
    -在这里插入图片描述在这里插入图片描述

结构型—适配器模式

结构型

适配器模式的核心套路

  1. 适配器模式其实就是通过一个第三方类来做了一个封装;就是包一层;
  2. 没有什么问题是包一层不能解决的,如果不能解决,那就再包一层;

结构型-代理模式

Proxy-Pattern代理模式:给某一个对象提供一个代理对象,并且代理对象控制对原有对象的一切引用!
在工作生活中,有哪些代理的场景?
1.火车票代售点;
2.VPN
结构型代理

结构型-装饰器模式模式

  1. Decorator-Pattern代理模式:结构型设计模式的巅峰之作,组合+继承;
  2. 把原有对象经过层层装饰,扩展新的功能 ;
  3. 装饰:装饰肯定会更好看一些;美化;

装饰器模式-番外篇

套娃是的装饰器模式和前面的装饰器模式有何区别?
本质没啥区别;
委托的本质是什么? 类;
都是包一层大法;

3.行为型设计模式

观察者模式

  1. 观察者模式(Observer-Pattern):当对象间存在一对多关系时,当一个对象的动作触发时,则会自动通知依赖它的对象;
  2. Cat的故事,夜黑风高的夜晚,突然猫Miao了一声,紧接着,老鼠跑了,主人醒了,Baby哭了,狗叫了…
  3. 过程式编程
    1.依赖太重,任何一个类型发生变化,都会影响到这只猫;
    2.执行顺序相对来说比较僵化,固定化;
    3.代码肯定不稳定,需求的变更导致代码必须重新发布重新编译
  4. 小试牛刀—甩锅大法
    1.做到保证自我稳定,哪里不稳定哪里就不在我这里存在;
    2.甩锅别人
    为了保证自己稳定,不属于我的,或者会威胁到让我不稳定的东西,甩出去,我不管,我只要我自己稳定;

责任链模式

责任链模式(ChainOfResponsibility-Pattern):行为型设计模式的巅峰之作!实现无限制的封装转移!
行为型设计模式的巅峰之作;

请假场景

大家应该都请过假吧?
1.发起审批
2.上级审批
3.上上级审批
….

审批逻辑

  1. 现实生活中,一个普通开发能先去找PM, 不行再去找Charge,不行还去找Manager审批吗?
  2. 这并不符合真实场景,应该是找PM,然后PM转交给Charge,Charge自动转交Manager;
  3. 虽然刚刚从POP升级到了OOP;但是,但还是个代码翻译机,仅仅只是添加了OOP的思想!在整个开发过程中,完全没有自己的思考,开发出来的东西看上去没问题,实际上根本不能用!
    升级一下:面向过程-----面向对象编程!
    考虑对象:PM/主管

封装:屏蔽细节,让上端不关注具体操作
继承:完成代码复用
多态:方便扩展
POP到OOP是一编程思想的升级!
通过对象的传递来判断,不够级,直接递交到下一级审批。

责任链模式

责任链

使用场景

流程审批
工资结算—扣工资+社保公积金+个人所得税
Http的管道处理模型

模板方法模式

模板方法模式(Template-Pattern):一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。

银行客户端

查询余额的动作;每个人的查询流程相对固定;
但是身份不同,可能业务逻辑不同;

迭代器模式

迭代器模式(Iterator-Pattern):提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示
其实就是用来依次获取聚合对象中的元素的套路;

总结

1.结构型设计模式:包一层
2.行为型设计模式:行为的转移—甩锅大法
3.创建型设计模式:灵活运用
设计模式:更多的是多个设计一起使用,一个设计仅仅只是解决一类问题,还有可能回带来其他问题;
多个设计模式一起灵活运用—最佳状态;

最后

以上就是无心水壶为你收集整理的13.DesignPattern设计模式(by-朝夕)设计模式三大类1.创建型设计模式2.结构型3.行为型设计模式总结的全部内容,希望文章能够帮你解决13.DesignPattern设计模式(by-朝夕)设计模式三大类1.创建型设计模式2.结构型3.行为型设计模式总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部