设计模式
星夜孤帆
人之有吾,当应披荆棘,斩鬼熊,成就一番大事
展开
-
设计模式详解
Gitee:design-patterns总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下:todoJav...原创 2021-10-20 20:32:06 · 256 阅读 · 0 评论 -
责任链模式在SpringAop中的使用
先模拟一下SpringAop中的责任链public interface MethodInvocation { Object proceed() throws Throwable; }定义拦截器接口public interface MethodInterceptor { Object invoke(MethodInvocation methodInvocation) throws Throwable;}定义前置通知,在目标方法调用前执行通知pub原创 2021-06-03 21:06:21 · 375 阅读 · 0 评论 -
责任链模式
应用实例要求编写程序完成学校OA系统的采购审批项目:需求采购员采购教学器材如果金额小于5000,由教学主任审批如果金额大于等于5000,小于等于10000,由院长审批如果金额大于10000,由校长审批思路分析和图解定义审核人public abstract class Approver { // 下一个处理者 Approver approver; // 名字 String name; // 构造器 pub...原创 2021-06-03 20:11:47 · 180 阅读 · 0 评论 -
策略模式在Spring中的应用
Spring相关配置@Configuration@ComponentScan(value = "com.best")public class AppConfig { }不打印debug日志,logback-test.xml<?xml version="1.0" encoding="UTF-8"?><configuration> <include resource="org/springframework/boot/logging/log.原创 2021-05-25 20:04:58 · 470 阅读 · 0 评论 -
策略模式
一、前言在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如数据排序策略有冒泡排序、选择排序、插入排序、二叉树排序等。如果使用多重条件转移语句实现(即硬编码),不但使条件语句变得很复杂,而且增加、删除或更换算法要修改原代码,不易维护,违背开闭原则。原创 2020-09-27 11:59:26 · 161 阅读 · 0 评论 -
桥接模式
一、前言在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。当然,这样的例子还有很多,如不同颜色和字体的文字、不同品牌和功率的汽车、不同性别和职业的男女、支持不同平台和不同文件格式的媒体播放器等。如果用桥接模式就能很好地解决这些问题。二、桥接模式-基本介绍三、桥接模式解决手机操作问.原创 2020-09-27 11:03:04 · 166 阅读 · 0 评论 -
设计模式
一、工厂模式二、代理模式三、装饰者模式四、建造者模式五、观察者模式六、原型模式七、适配器模式八、享元模式九、外观模式十、组合模式原创 2020-09-25 11:15:09 · 149 阅读 · 0 评论 -
组合模式
一、前言在现实生活中,存在很多“部分-整体”的关系,例如,大学中的部门与学院、总公司中的部门与分公司、学习用品中的书与书包、生活用品中的衣月艮与衣柜以及厨房中的锅碗瓢盆等。在软件开发中也是这样,例如,文件系统中的文件与文件夹、窗体程序中的简单控件与容器控件等。对这些简单对象与复合对象的处理,如果用组合模式来实现会很方便。二、组合模式介绍三、组合模式解决学校院系展示四、代码实现public abstract class OrganizationComponent {.原创 2020-09-25 11:09:07 · 177 阅读 · 0 评论 -
外观模式
一、影院管理项目二、传统方式解决影院管理三、外观模式基本介绍四、使用外观模式完成家庭影院项目public class DVDPlayer { //使用单例模式, 使用饿汉式 private static DVDPlayer instance = new DVDPlayer(); public static DVDPlayer getInstanc() { return instance; } public void on() { ..原创 2020-09-22 11:58:33 · 156 阅读 · 0 评论 -
享元模式
一、前言在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提取出来共享,则能节省大量的系统资源,这就是享元模式的产生背景。二、享元模式基本介绍三、享元模式原理类图四、内部状态和外部状态五、展示网站项目需求六、代码..原创 2020-09-22 10:44:03 · 130 阅读 · 0 评论 -
适配器模式
一、前言在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访问照相机的 SD 内存卡时需要一个读卡器等。在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些组件成本又很高,这时用适配器模式能很好地解决这些问题。二、基本介绍三、工作原理四、类适配器模.原创 2020-09-21 16:54:14 · 491 阅读 · 0 评论 -
原型模式
一、前言在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。二、基本介绍三、原型模式UML类图四、原型模式解决克隆羊问题的应用实例public class Sheep implements Cloneable { private String name; private int age; private String color; pri.原创 2020-09-21 11:27:14 · 148 阅读 · 0 评论 -
观察者模式
一、引言 在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有,当我们开车到交叉路口时,遇到红灯会停,遇到绿灯会行。这样的例子还有很多,例如,股票价格与股民、微信公众号与微信用户、气象局的天气预报与听众、小偷与警察等。二、模式的定义与特点观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并..原创 2020-09-18 21:48:55 · 925 阅读 · 0 评论 -
建造者模式
构建者模式原创 2020-09-12 14:46:32 · 151 阅读 · 0 评论 -
设计模式之装饰者设计模式
设计模式简介什么是设计模式?设计模式是可以重复利用的解决方案。软件开发的先驱或者前辈们将之前在开发中遇到的问题进行总结并给出了解决方案,后辈在遇到这些问题之后直接使用这些方案即可解决问题。比如盖高楼,都是先挖地基,然后再盖,如果先盖楼后挖地基,可能盖不了几层,楼就倒了。装饰者设计模式使用场景:给某个对象的功能进行扩展时,可以考虑使用装饰者设计模式。在IO流这部分内容中,JDK的源...原创 2019-04-27 16:42:17 · 149 阅读 · 0 评论 -
设计模式之观察者模式
观察者设计模式简介现实生活中,每个人都是一个观察者,同时也是一个被观察者,"你站在桥上看风景,看风景的人在楼上看你"形容的就是这样的一个场景。观察者设计模式,定义了一种一对多的关联关系。一个对象 A 与多个对象 B、C、D 之间建立“被观察与观察关系”。当对象 A 的状态发生改变时,会通知所有观察者对象 B、 C、 D。当B、C、D 在接收到 A 的状态改变通知后,根据自身实际情况,做出相应...原创 2019-04-27 16:41:03 · 179 阅读 · 0 评论 -
设计模式之工厂模式
工厂模式简介工厂模式就是用工厂提供的方法代替了使用new创建对象的操作, 将创建对象统一管理和控制从而将调用者与实现类进行解耦,实现了创建者与调用者的分离。例如MyBatis中SqlSessionFactory创建SqlSession,这个就使用了工厂模式。工厂模式的分类:简单工厂模式(静态工厂) 工厂方法模式 抽象工厂简单工厂模式有的地方也叫作静态工厂,实际上它并不算是设计模...原创 2019-04-27 16:09:07 · 195 阅读 · 0 评论 -
设计模式之代理模式
java代理模式静态代理和动态代理代理模式简介代理模式(proxy)指的是为一个对象提供一个代理以控制外界对该对象的访问,比如有些情况下对象A不能直接访问对象B,此时可以为对象B创建一个代理C,然后对象A通过访问代理C来间接访问对象B。比如你看上了你女性朋友的闺蜜,此时你可以通过你的朋友来跟她闺蜜进行一些沟通。有的时候我们希望增强某个方法的功能,但是有不方便直接修改该方法,此时也可通过代...原创 2019-04-27 15:06:08 · 147 阅读 · 0 评论