设计模式
设计模式
博_采_众_长
理论与实践并行!
展开
-
详解23种设计模式(基于Java语言)
详解23种设计模式(基于Java语言)单例模式原创 2020-11-01 18:29:10 · 100 阅读 · 0 评论 -
设计模式 -- 设计模式七大原则
设计模式 – 设计模式七大原则设计模式的目的 编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好设计模式七大原则...原创 2020-11-01 14:31:28 · 162 阅读 · 0 评论 -
设计模式 -- 单一职责原则
设计模式 – 单一职责原则1、基本介绍 对类来说的,即一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2.2、应用实例 交通工具案例方案1public class SingleResponsibility1原创 2020-10-31 15:51:36 · 140 阅读 · 0 评论 -
设计模式 -- 接口隔离原则(Interface Segregation Principle)
设计模式 – 接口隔离原则1、基本介绍原创 2020-10-31 18:18:55 · 129 阅读 · 0 评论 -
设计模式 -- 依赖倒转原则
设计模式 – 依赖倒转原则1、基本介绍依赖倒转原则(Dependence Inversion Principle)是指:高层模块不应该依赖低层模块,二者都应该依赖其抽象抽象不应该依赖细节,细节应该依赖抽象依赖倒转(倒置)的中心思想是面向接口编程依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在 java 中,抽象指的是接口或抽象类,细节就是具体的实现类使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,原创 2020-10-31 19:20:58 · 157 阅读 · 0 评论 -
设计模式 -- 里氏替换原则
设计模式 – 里氏替换原则OO 中的继承性的思考和说明继承包含这样一层含义:父类中凡是已经实现好的方法,实际上是在设定规范和契约,虽然它不强制要求所有的子类必须遵循这些契约,但是如果子类对这些已经实现的方法任意修改,就会对整个继承体系造成破坏。继承在给程序设计带来便利的同时,也带来了弊端。比如使用继承会给程序带来侵入性,程序的可移植性降低, 增加对象间的耦合性,如果一个类被其他的类所继承,则当这个类需要修改时,必须考虑到所有的子类,并且父类修改后,所有涉及到子类的功能都有可能产生故障问题提出:在编原创 2020-10-31 19:45:46 · 104 阅读 · 0 评论 -
设计模式 -- 开闭原则(Ocp)
设计模式 – 开闭原则1、基本介绍开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则。2、应用实例一个画图形的功能方式1public class Ocp {public static v原创 2020-10-31 20:27:17 · 375 阅读 · 0 评论 -
设计模式 -- 迪米特法则(Demeter Principle)
设计模式 – 迪米特法则(Demeter Principle)1、基本介绍一个对象应该对其他对象保持最少的了解类与类关系越密切,耦合度越大迪米特法则 (Demeter Principle) 又叫 最少知道原则 ,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的 public 方法,不对外泄露任何信息迪米特法则还有个更简单的定义:只与直接的朋友通信直接的朋友: 每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们原创 2020-10-31 21:01:40 · 305 阅读 · 0 评论 -
设计模式 -- 合成复用原则(Composite Reuse Principle)
设计模式 – 合成复用原则(Composite Reuse Principle)1、基本介绍原则是尽量使用合成/聚合的方式,而不是使用继承设计原则核心思想找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。针对接口编程,而不是针对实现编程。为了交互对象之间的松耦合设计而努力...原创 2020-10-31 21:08:35 · 140 阅读 · 0 评论 -
设计模式 -- UML类图
设计模式 – UML类图1、基本介绍 1)UML——Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 2)UML 本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素.原创 2020-11-01 09:40:11 · 173 阅读 · 0 评论 -
设计模式 -- 设计模式概述
设计模式 – 设计模式概述1、掌握设计模式的层次 1)第 1 层:刚开始学编程不久,听说过什么是设计模式 2)第 2 层:有很长时间的编程经验,自己写了很多代码,其中用到了设计模式,但是自己却不知道 3)第 3 层:学习过原创 2020-11-01 14:25:58 · 84 阅读 · 0 评论 -
设计模式 -- 单例模式
文章目录1、单例设计模式介绍2、单例设计模式八种方式饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安全,同步方法)懒汉式(线程安全,同步代码块)双重检查静态内部类枚举3、单例模式在 JDK 应用的源码分析4、单例模式注意事项和细节说明1、单例设计模式介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例, 并且该类只提供一个取得其对象实例的方原创 2020-11-01 16:05:50 · 128 阅读 · 2 评论 -
设计模式 -- 工厂模式
文章目录1、简单工厂模式1.1、看一个具体的需求1.2、使用传统的方式来完成1.3、传统的方式的优缺点1.4、基本介绍1.5、使用简单工厂模式2、工厂方法模式2.1、看一个新的需求2.2、思路 12.3、思路 22.4、工厂方法模式介绍2.5、工厂方法模式应用案例3、抽象工厂模式3.1、基本介绍3.2、抽象工厂模式应用实例4、工厂模式在 JDK-Calendar 应用的源码分析5、工厂模式小结1、简单工厂模式1.1、看一个具体的需求看一个披萨的项目:要便于披萨种类的扩展,要便于维护 &nb原创 2020-11-01 20:51:30 · 200 阅读 · 0 评论 -
设计模式 -- 原型模式
文章目录1、克隆羊问题2、传统方式解决克隆羊问题3、传统的方式的优缺点4、原型模式-基本介绍5、原型模式原理结构图 - UML类图6、原型模式解决克隆羊问题的应用实例7、原型模式在 Spring 框架中源码分析8、深入讨论-浅拷贝和深拷贝8.1、浅拷贝的介绍8.2、深拷贝基本介绍9、深拷贝应用实例10、原型模式的注意事项和细节1、克隆羊问题 现在有一只羊 tom,姓名为: tom, 年龄为:1,颜色为:白色,请原创 2020-11-02 09:01:39 · 138 阅读 · 0 评论 -
设计模式 -- 建造者模式
文章目录1、盖房项目需求2、传统方式解决盖房需求3、传统方式的问题分析4、建造者模式基本介绍5、建造者模式的四个角色6、建造者模式原理类图7、建造者模式解决盖房需求应用实例8、建造者模式在 JDK 的应用和源码分析9、建造者模式的注意事项和细节1、盖房项目需求 1)需要建房子:这一过程为打桩、砌墙、封顶 2)房子有各原创 2020-11-02 09:50:48 · 284 阅读 · 0 评论 -
设计模式 -- 适配器模式
文章目录1、现实生活中的适配器例子2、基本介绍3、工作原理4、类适配器模式4.1、类适配器模式介绍4.1、类适配器模式应用实例4.3、类适配器模式注意事项和细节5、对象适配器模式5.1、对象适配器模式介绍5.2、对象适配器模式应用实例5.3、对象适配器模式注意事项和细节6、接口适配器模式6.1、接口适配器模式介绍6.2、接口适配器模式应用实例7、适配器模式在 SpringMVC 框架应用的源码剖析8、适配器模式的注意事项和细节1、现实生活中的适配器例子泰国插座用的是两孔的(欧标),可以买个多功能转换插头原创 2020-11-02 15:03:58 · 299 阅读 · 1 评论 -
设计模式 -- 桥接模式
文章目录1、手机操作问题2、传统方案解决手机操作问题3、传统方案解决手机操作问题分析4、桥接模式(Bridge)-基本介绍5、桥接模式(Bridge)-原理类图6、桥接模式解决手机操作问题7、桥接模式在 JDBC 的源码剖析8、桥接模式的注意事项和细节9、常见的应用场景:1、手机操作问题 现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图:2、传统方案解决手机操作问题&nb原创 2020-11-02 15:38:38 · 77 阅读 · 0 评论 -
设计模式 -- 装饰者模式
文章目录1、星巴克咖啡订单项目(咖啡馆)2、方案 1-解决星巴克咖啡订单项目3、方案 1-解决星巴克咖啡订单问题分析4、方案 2-解决星巴克咖啡订单(好点)5、方案 2-解决星巴克咖啡订单问题分析6、装饰者模式定义7、装饰者模式原理8、装饰者模式解决星巴克咖啡订单9、装饰者模式下的订单:2 份巧克力+一份牛奶的 LongBlack10、装饰者模式咖啡订单项目应用实例11、装饰者模式在 JDK 应用的源码分析1、星巴克咖啡订单项目(咖啡馆) &nb原创 2020-11-02 16:30:35 · 222 阅读 · 0 评论 -
设计模式 -- 组合模式
文章目录1、看一个学校院系展示需求2、传统方案解决学校院系展示(类图)3、传统方案解决学校院系展示存在的问题分析4、组合模式基本介绍5、组合模式原理类图6、组合模式解决学校院系展示的 应用实例7、组合模式在 JDK 集合的源码分析8、组合模式的注意事项和细节1、看一个学校院系展示需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图:原创 2020-11-02 19:05:18 · 426 阅读 · 0 评论 -
设计模式 -- 外观模式
文章目录1、影院管理项目2、传统方式解决影院管理3、传统方式解决影院管理问题分析4、外观模式基本介绍5、外观模式原理类图6、外观模式解决影院管理6.1、传统方式解决影院管理说明6.2、外观模式应用实例7、外观模式在 MyBatis 框架应用的源码分析8、外观模式的注意事项和细节1、影院管理项目组建一个家庭影院:DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为: 直接用遥控器:统筹各设备开关 &nb原创 2020-11-02 21:03:56 · 159 阅读 · 1 评论 -
设计模式 -- 享元模式
文章目录1、展示网站项目需求2、传统方案解决网站展现项目3、传统方案解决网站展现项目-问题分析4、享元模式基本介绍5、享元模式的原理类图6、内部状态和外部状态7、享元模式解决网站展现项目8、享元模式在 JDK-Interger 的应用源码分析9、享元模式的注意事项和细节1、展示网站项目需求 小型的外包项目,给客户 A 做一个产品展示网站,客户 A 的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不原创 2020-11-03 13:33:49 · 216 阅读 · 0 评论 -
设计模式 -- 代理模式
文章目录1、代理模式(Proxy)1.1、代理模式的基本介绍2、静态代理2.1、静态代码模式的基本介绍2.2、应用实例2.3、静态代理优缺点3、动态代理3.1、动态代理模式的基本介绍3.2、JDK 中生成代理对象的 API3.3、动态代理应用实例4、Cglib 代理4.1、Cglib 代理模式的基本介绍4.2、Cglib 代理模式实现步骤4.3、Cglib 代理模式应用实例5几种常见的代理模式介绍— 几种变体1、代理模式(Proxy)1.1、代理模式的基本介绍 &nb转载 2020-11-03 15:17:29 · 79 阅读 · 0 评论 -
设计模式 -- 模板方法模式
文章目录1、豆浆制作问题2、模板方法模式基本介绍3、模板方法模式原理类图3.1、模板方法模式的原理类图4、模板方法模式解决豆浆制作问题5、模板方法模式的钩子方法6、模板方法模式在 Spring 框架应用的源码分析7、模板方法模式的注意事项和细节1、豆浆制作问题编写制作豆浆的程序,说明如下: 1)制作豆浆的流程 选材—>添加配料—>浸泡—>放到豆浆机打碎 &原创 2020-11-03 15:57:46 · 108 阅读 · 1 评论 -
设计模式 -- 命令模式
文章目录1、智能生活项目需求2、命令模式基本介绍1、智能生活项目需求看一个具体的需求 1)我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装 app 就可以控制对这些家电工作。 2)这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个 App,分别控制,我们希望只要一个 app就可原创 2020-11-03 18:53:26 · 120 阅读 · 0 评论 -
设计模式 -- 访问者模式
文章目录1、测评系统的需求2、传统方式的问题分析3、访问者模式基本介绍4、访问者模式的原理类图5、访问者模式应用实例6、访问者模式的注意事项和细节1、测评系统的需求完成测评系统需求 1)将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等) &nbs原创 2020-11-03 19:32:22 · 108 阅读 · 0 评论 -
设计模式 -- 迭代器模式
文章目录1、看一个具体的需求2、传统的设计方案(类图)3、传统的方式的问题分析4、迭代器模式基本介绍5、迭代器模式的原理类图6、迭代器模式应用实例7、迭代器模式在 JDK-ArrayList 集合应用的源码分析8、迭代器模式的注意事项和细节1、看一个具体的需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图:2、传统的设计方案(类图原创 2020-11-03 20:18:54 · 142 阅读 · 0 评论 -
设计模式 -- 观察者模式
文章目录1、天气预报项目需求,具体要求如下:2、天气预报设计方案 1-普通方案2.1、WeatherData 类3、观察者模式原理4、观察者模式解决天气预报需求4.1、类图说明4.2、代码实现4.3、观察者模式的好处5、观察者模式在 Jdk 应用的源码分析1、天气预报项目需求,具体要求如下: 1)气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。 &n原创 2020-11-04 09:45:53 · 234 阅读 · 0 评论 -
设计模式 -- 中介者模式
文章目录1、智能家庭项目2、传统方案解决智能家庭管理问题3、传统的方式的问题分析4、中介者模式基本介绍5、中介者模式的原理类图6、中介者模式应用实例-智能家庭管理7、中介者模式的注意事项和细节1、智能家庭项目智能家庭项目: 1)智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘 等 2)主人要看电视时,各个设备可以原创 2020-11-04 11:20:28 · 112 阅读 · 0 评论 -
设计模式 -- 备忘录模式
文章目录1、游戏角色状态恢复问题2、传统方案解决游戏角色恢复3、传统的方式的问题分析4、备忘录模式基本介绍5、备忘录模式的原理类图6、游戏角色恢复状态实例7、备忘录模式的注意事项和细节1、游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战 Boss 前保存自身的状态(攻击力和防御力),当大战 Boss 后攻击力和防御力下降,从备忘录对象恢复到大战前的状态2、传统方案解决游戏角色恢复3、传统的方式的问题原创 2020-11-04 13:27:07 · 109 阅读 · 0 评论 -
设计模式 -- 解释器模式
文章目录1、四则运算问题2、传统方案解决四则运算问题分析3、解释器模式基本介绍4、解释器模式的原理类图5、解释器模式来实现四则6、解释器模式在 Spring 框架应用的源码剖析7、解释器模式的注意事项和细节1、四则运算问题通过解释器模式来实现四则运算,如计算 a+b-c 的值,具体要求 1)先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复 &nbs原创 2020-11-04 15:21:49 · 85 阅读 · 0 评论 -
设计模式 -- 状态模式
文章目录1、APP 抽奖活动问题2、状态模式基本介绍3、状态模式的原理类图4、状态模式解决 APP 抽奖问5、状态模式在实际项目-借贷平台 源码剖析6、状态模式的注意事项和细节1、APP 抽奖活动问题请编写程序完成 APP 抽奖活动 具体要求如下: 1)假如每参加一次这个活动要扣除用户 50 积分,中奖概率是 10% &nbs原创 2020-11-04 16:10:42 · 150 阅读 · 0 评论 -
设计模式 -- 策略模式
文章目录1、编写鸭子项目,具体要求如下:2、传统方案解决鸭子问题的分析和代码实现3、传统的方式实现的问题分析和解决方案4、策略模式基本介绍5、策略模式的原理类图6、策略模式解决鸭子问题7、策略模式在 JDK-Arrays 应用的源码分析8、策略模式的注意事项和细节1、编写鸭子项目,具体要求如下: 1)有各种鸭子(比如 野鸭、北京鸭、水鸭等, 鸭子有各种行为,比如 叫、飞行等)  原创 2020-11-04 17:32:58 · 178 阅读 · 0 评论 -
策略模式 -- 职责链模式
文章目录1、学校 OA 系统的采购审批项目:需求是2、传统方案解决 OA 系统审批,传统的设计方案(类图)3、传统方案解决 OA 系统审批问题分析4、职责链模式基本介绍5、职责链模式的原理类图6、职责链模式解决 OA 系统采购审批7、职责链模式在 SpringMVC 框架应用的源码分析8、职责链模式的注意事项和细节1、学校 OA 系统的采购审批项目:需求是采购员采购教学器材 1) 如果金额 小于等于 5000原创 2020-11-04 18:02:46 · 314 阅读 · 4 评论