概述
DesignPattern
- 设计模式三大类
- 设计模式相关
- 类和类之间的关系
- 类横向关系解析
- 类和类的强弱关系
- 1.创建型设计模式
- 单例模式
- 单例双判断锁
- 饿汉式单例模式
- 单例模式
- 单例模式的应用
- 原型模式
- 原型模式的特点
- 简单工厂
- 抽象工厂
- 建造者模式
- 2.结构型
- 结构型—适配器模式
- 结构型—适配器模式
- 适配器模式的核心套路
- 结构型-代理模式
- 结构型-装饰器模式模式
- 装饰器模式-番外篇
- 3.行为型设计模式
- 观察者模式
- 责任链模式
- 请假场景
- 审批逻辑
- 责任链模式
- 使用场景
- 模板方法模式
- 银行客户端
- 迭代器模式
- 总结
设计模式三大类
设计模式相关
- 单一职责,里氏替换原则,依赖倒置原则,迪米特法则,接口隔离原则开闭原则。
- 设计模式其实就是在面向对象语言程序开发设计中,解决各种具体问题总结的具体办法,沉淀下来;
类和类之间的关系
类横向关系解析
- 依赖关系: 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:港版,美版,国行;
- 适配器就是把不能一起使用的东西,通过适配,变 的可以一起使用;
- 类适配器
- 对象适配器
-
结构型—适配器模式
适配器模式的核心套路
- 适配器模式其实就是通过一个第三方类来做了一个封装;就是包一层;
- 没有什么问题是包一层不能解决的,如果不能解决,那就再包一层;
结构型-代理模式
Proxy-Pattern代理模式:给某一个对象提供一个代理对象,并且代理对象控制对原有对象的一切引用!
在工作生活中,有哪些代理的场景?
1.火车票代售点;
2.VPN
结构型-装饰器模式模式
- Decorator-Pattern代理模式:结构型设计模式的巅峰之作,组合+继承;
- 把原有对象经过层层装饰,扩展新的功能 ;
- 装饰:装饰肯定会更好看一些;美化;
装饰器模式-番外篇
套娃是的装饰器模式和前面的装饰器模式有何区别?
本质没啥区别;
委托的本质是什么? 类;
都是包一层大法;
3.行为型设计模式
观察者模式
- 观察者模式(Observer-Pattern):当对象间存在一对多关系时,当一个对象的动作触发时,则会自动通知依赖它的对象;
- Cat的故事,夜黑风高的夜晚,突然猫Miao了一声,紧接着,老鼠跑了,主人醒了,Baby哭了,狗叫了…
- 过程式编程
1.依赖太重,任何一个类型发生变化,都会影响到这只猫;
2.执行顺序相对来说比较僵化,固定化;
3.代码肯定不稳定,需求的变更导致代码必须重新发布重新编译 - 小试牛刀—甩锅大法
1.做到保证自我稳定,哪里不稳定哪里就不在我这里存在;
2.甩锅别人
为了保证自己稳定,不属于我的,或者会威胁到让我不稳定的东西,甩出去,我不管,我只要我自己稳定;
责任链模式
责任链模式(ChainOfResponsibility-Pattern):行为型设计模式的巅峰之作!实现无限制的封装转移!
行为型设计模式的巅峰之作;
请假场景
大家应该都请过假吧?
1.发起审批
2.上级审批
3.上上级审批
….
审批逻辑
- 现实生活中,一个普通开发能先去找PM, 不行再去找Charge,不行还去找Manager审批吗?
- 这并不符合真实场景,应该是找PM,然后PM转交给Charge,Charge自动转交Manager;
- 虽然刚刚从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.行为型设计模式总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复