23种设计模式
文章平均质量分 88
23中设计模式全面讲解,从理论知识到代码实践
编程小吉
莫问前程几许,只顾风雨兼程,既然选择了,那就努力做下去,加油 !
展开
-
设计模式之访问者模式
访问者模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景1.简要概述访问者模式属于行为型设计模式,在类的内部结构不变的情况下,不同的访问者访问某个对象会呈现出不同的处理结果。访问者模式就是封装一些作用于某种数据结构的各个元素的操作,然后它可以在不改变数据结构的前提下,定义作用于这些元素的新操作。访问者模式的核心就是为一个对象结构增加新的能力,在被访问的类里面加一个对外提供接待访问者的接口。访问者模式主要就是将数据结构和数据操作进行分离,解决了数据结构和数据操作的耦合性问原创 2021-10-31 19:42:17 · 1141 阅读 · 0 评论 -
设计模式之策略模式
策略模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述策略模式也叫作决策模式,属于行为型设计模式。策略模式定义了解决某一个问题的一个算法族,允许用户从该算法族中针对不同的场景选择一个算法解决该问题,同时可以方便的更换算法或者增加新的算法。策略模式会定义一系列算法,然后对其进行封装并使它们可以相互替换,让算法独立于使用它的客户端。策略模式的本质就是将不同的算法进行分离,然后选择性的进行实现。策略模式和状态模式的对象类图类似,并且都是能够动态改变对原创 2021-10-30 18:33:26 · 1192 阅读 · 0 评论 -
设计模式之责任链模式
责任链模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述责任链模式也叫作职责链模式,属于行为型设计模式。责任链模式将能够处理同一类请求的对象连成一条链,所提交的请求会沿着这条链进行依次处理。责任链模式中,通常会在每一个请求处理者中都包含下一个请求处理者的引用,如果一个请求不能够被当前处理者处理,则传递到这条链的下一个请求处理者对象,以此类推。责任链模式中,一个处理者对象通常只有两个行为,一是处理请求,二是将请求传递给下一个处理者,不允许某个处理者原创 2021-10-29 19:53:32 · 1114 阅读 · 0 评论 -
设计模式之状态模式
状态模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述状态模式属于行为型设计模式。状态模式就是说将一个对象在不同状态下的不同行为封装在一个个状态类中,通过设置不同的状态对象可以让环境对象拥有不同的行为。状态模式用于解决系统中复杂对象的状态转换问题,并对于不同状态下的不同行为进行封装。状态模式允许在对象的内部状态发生改变时,对它的行为也进行相应的改变。2.模式结构????通常由一个环境类( 通常是一个具体的对象,负责维护对象的状态实例,里面原创 2021-10-28 18:43:13 · 1201 阅读 · 0 评论 -
设计模式之解释器模式
解释器模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述解释器模式是一种用得比较少的设计模式,属于行为型设计模式。解释器模式提供了一种解释语言的语法或表达式的方式,该模式定义了一个表达式接口,通过该接口解释一个特定的上下文。解释器模式用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计。解释器模式的核心思想就是为给定的语言创建解释器,然后对语言中的语法进行分析,定义出它的文法的一种表示,最后通过解释器来解释运行语原创 2021-10-27 22:32:16 · 1090 阅读 · 0 评论 -
设计模式之模板方法模式
模板方法模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述模板方法模式也叫作模板模式,属于行为型设计模式。模板方法模式定义了一个操作中的算法骨架,并将一些特殊的步骤延迟到子类中实现。模板方法模式的核心思想,就是在父类中定义了一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤,以完成不同的需求。模板方法模式中,也可以定义钩子方法,钩子方法可以对其他方法进行约束,通常返回一个boolean类型的标识,用来判断是否执行某一个基本方法,钩子方原创 2021-10-26 20:49:44 · 1122 阅读 · 0 评论 -
设计模式之备忘录模式
备忘录模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景1.简要概述备忘录模式也可以叫做快照模式。备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并将该状态保存在另外一个对象中去,这样以后就可以随时将该对象恢复到原来保存的那个状态。备忘录模式核心就是通过保存某个对象的内部状态,然后可以实现将该对象恢复到原来的某个状态。2.模式结构????通常由一个原始对象类( 负责创建备忘录来保存自己的内部状态、使用备忘录恢复自己的内部状态 ),一个备忘录类( 负责存储原创 2021-10-25 19:05:34 · 1054 阅读 · 0 评论 -
设计模式之中介者模式
中介者模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述中介者模式是实现相关对象之间复杂沟通的控制方式,用一个中介对象封装一系列的对象交互,使得各个对象之间不再需要显式的互相调用。中介者模式是用来降低多个对象和类之间的通信复杂性,通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式的本质就是将多个有关联的对象进行解耦,让每个对象都持有一个相同的中介者对象的引用,然后通过这个引用完成它们之间的交互。2.模式结构????通常由一个原创 2021-10-24 18:37:13 · 1085 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述观察者模式定义了对象之间的一对多关系,也就是说当一个对象的状态发生变化时,会告知其它的依赖对象也做相应的状态更新。观察者模式中,发送状态变化通知的对象称之为目标对象(Subject),接收并响应状态变化的对象称之为观察者对象(Observer)。2.模式结构????通常由一个主题接口( 负责定义管理、维护、通知观察者的一系列方法接口 ),多个具体的主题类( 负责实现对于观察者的注册、移除原创 2021-10-24 00:37:47 · 1035 阅读 · 0 评论 -
设计模式之迭代器模式
迭代器模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述迭代器模式也叫作游标模式,它提供了一种顺序访问聚合对象元素的方法,并且不暴露聚合对象的内部表示。迭代器模式的主要思想是将集合的遍历行为抽取为单独的迭代器对象,所有迭代器必须实现相同的接口,这样一来,只要有合适的迭代器,客户端就能兼容任何类型的集合或遍历算法。2.模式结构????通常由一个迭代器接口( 负责定义对集合对象中元素进行获取的相关方法 ),多个具体的迭代器类( 负责为特定集合实现原创 2021-10-21 23:39:39 · 1029 阅读 · 0 评论 -
设计模式之命令模式
命令模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述命令模式就是将一个请求封装为一个对象,从而使我们可对不同的请求进行参数化,也就是使用不同的参数来表示不同的请求。命令模式使用命令来参数化其它对象、将命令放入队列中进行排队、将命令的操作记录到日志中。命令模式支持可撤销的操作。2.模式结构????通常由一个调用者类( 负责调用命令来执行特定操作,也叫作请求的发送者 ),一个接受者类( 负责执行命令的相关操作,实现具体的业务 ),一个抽象命令原创 2021-10-21 13:13:04 · 1017 阅读 · 0 评论 -
设计模式之代理模式
代理模式1.简要概述2.模式分类3.模式结构4.实现代码5.优点好处6.缺点弊端7.应用场景8.应用示例1.简要概述代理模式就是通过代理对象来控制对真实对象的访问,也就是详细的控制访问某个对象的方法,从而将一些统一的流程代码放到代理类中处理。代理模式中,被代理的对象可以是远程对象、创建开销大的对象、需要安全控制的对象。代理模式是面向切面编程的核心实现思想。2.模式分类静态代理在静态代理中,需要定义一个公共接口,代理对象和被代理对象都要实现这个公共接口中的方法。// 教师接口pu原创 2021-10-18 23:53:53 · 1052 阅读 · 0 评论 -
设计模式之享元模式
享元模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述享元模式也叫作蝇量模式,就是以共享的方式高效的支持大量细粒度对象的重用,这些对象一部分内部状态是相同的。享元模式中的享元对象能做到共享的关键是区分了内部状态和外部状态,内部状态可以共享而且不会随环境变化而改变,外部状态不可以共享但会随环境变化而改变。????举例:在围棋中,我们知道棋子的颜色分为黑色和白色,每个棋子所在棋盘的位置都不相同,所以这里棋子的颜色就可以看作是内部状态(可共享的)原创 2021-10-17 21:50:14 · 1079 阅读 · 0 评论 -
设计模式之外观模式
外观模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述外观模式也叫作过程模式,通过定义一个高度抽象的接口,将复杂的过程进行封装,使其更加容易扩展和维护。外观模式为子系统提供统一的入口,封装子系统的复杂性,用以屏蔽子系统内部的细节,使得调用端只需和这个统一的访问入口发生联系,而无需关心子系统内部的实现。2.模式结构????通常由一个外观类( 负责为调用端提供统一的调用接口,将请求代理给指定的子系统对象 ),多个子系统( 负责完成特定任务的子模块原创 2021-10-17 00:29:11 · 1043 阅读 · 0 评论 -
设计模式之组合模式
组合模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述组合模式又叫做部分整体模式,它将对象组合成树形结构来表示“整体与部分”之间的层次关系。组合模式使得用户对单个对象和组合对象的访问具有了一致性,即允许用户以统一的方式处理单个对象和组合对象。组合模式为处理树形结构提供了完美的解决方案,描述了如何将容器和叶子进行递归组合,使得用户在使用时可以一致性的对待容器和叶子。2.模式结构????通常由一个抽象组件接口( 负责定义所有实现类共有的方法接口原创 2021-10-16 00:02:55 · 1096 阅读 · 0 评论 -
设计模式之装饰器模式
装饰器模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述装饰器模式也叫作包装器模式,就是动态的为一个对象增加新的功能。装饰器模式是一种用于代替传统继承的技术,通过使用对象的关联关系来代替继承关系,让系统无需通过继承父类增加子类就能够在原来对象的基础上扩展新功能。2.模式结构????通常由一个组件接口( 负责定义真实对象与装饰器对象相同的接口方法 ),多个具体的组件实现类( 负责实现不同对象实例化操作的内部逻辑 ),一个抽象装饰类( 负责接收用原创 2021-10-15 11:07:14 · 1203 阅读 · 0 评论 -
设计模式之桥接模式
桥接模式1.简要概述2.问题引入3.模式结构4.实现代码5.优点好处6.缺点弊端7.应用场景8.应用示例1.简要概述桥接模式就是将实现和抽象放在两个不同的类层次中,也就是将抽象和实现分离开来,使它们可以独立变化。桥接模式基于类的最小设计原则,通过使用封装、聚合以及继承等行为让不同的类承担不同的职责。2.问题引入假设我们要处理一个电脑销售的逻辑任务,这里电脑有三种类型,每种类型又分别对应三种不同的品牌,如下图:如果我们用传统继承的方式来处理此任务的话,明显会存在以下问题:如果我们想再原创 2021-10-14 11:57:24 · 1065 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式1.简要概述2.模式分类3.模式结构4.实现代码5.优点好处6.缺点弊端7.应用场景8.应用示例1.简要概述适配器模式就是将一个类的接口转换成客户需要的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。适配器模式中,对用户来说,他调用的只是目标接口中的方法,而对于内部被适配的类的方法是透明的,实现了用户与适配类之间的解耦。2.模式分类适配器模式主要有三种:类适配器模式、对象适配器模式、接口适配器模式。类适配器模式中,由于适配器原创 2021-10-13 00:09:59 · 1033 阅读 · 0 评论 -
设计模式之原型模式
原型模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例8.深克隆和浅克隆1.简要概述原型模式很类似与现实世界中的克隆技术,就是以某个对象为原型,然后复制出新的对象,该对象具备原型对象的所有特点。原型模式用于创建重复的对象,同时又能保证性能,它提供了一种创建对象的最佳方式。原型模式创建对象的过程,就是使用原型实例指定要创建对象的类型,然后通过复制这个原型来创建新对象。原型模式的克隆方式与new方式有很大不同,采用new方式创建的对象属性值采用的是默认值,而克隆原创 2021-10-11 22:45:55 · 1073 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述建造者模式也可以叫做生成器模式。建造者模式就是说首先封装一个对象的构造过程,然后按照这个过程步骤去构建这个对象实例。建造者模式的本质就是分离了对象子组件的单独构建和装配过程,从而可以构造出更加复杂的对象。复杂对象就好比一部有待建造的手机,而对象中的属性就好比手机中的各个部件,所以建造对象的过程就好比是手机部件相互组合建造手机的过程。对于复杂对象而言,它们的创建过程很复杂,因此我们想把这些过程原创 2021-10-10 18:25:20 · 1021 阅读 · 0 评论 -
设计模式之工厂模式
工厂模式一、简单工厂模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例二、工厂方法模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例一、简单工厂模式1.简要概述简单工厂模式就是在创建一个对象时,不向客户端暴露内部创建细节,而是提供一个创建对象的通用接口。简单工厂模式也叫静态工厂模式,就是工厂类一般是使用静态方法, 通过接收参数的不同来返回不同的对象实例 。简单工厂模式中,可以根据参数的不同返回不同类的实例。因为简单工厂模原创 2021-10-09 14:07:34 · 1013 阅读 · 0 评论 -
设计模式之单例模式
单例模式一.简要概述二.模式结构三.实现方式1.饿汉式实现2.懒汉式实现3.双重检测锁实现4.静态内部类实现5.枚举类实现四.注意事项五.优点好处六.如何选用七.应用场景一.简要概述单例模式就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个获取该实例的静态方法。单例模式确保了某一个类只有一个实例,而且会自行实例化并向整个系统提供这个实例,保证了自身唯一性。二.模式结构通常使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现三.实现方式原创 2021-10-07 22:17:57 · 954 阅读 · 0 评论 -
设计模式基本概述
基本概述一.什么是设计模式二.设计模式的好处三.设计模式的基本原则1.开闭原则2.里氏替换原则3.依赖倒置原则4.单一职责原则5.接口隔离原则6.合成复用原则7.迪米特法则四.设计模式有哪些分类1.创建型模式2.结构型模式3.行为型模式一.什么是设计模式在软件工程中,设计模式是对软件设计中普遍存在的各种问题所提出的一些通用解决方案,这个术语是由艾丽希·伽玛等人在1990年代从建筑设计领域引入到计算机科学来的。设计模式是人们在面对同类型的软件工程设计问题时所总结出的一些有用经验,把这些经验构成了一种思原创 2021-10-07 22:07:43 · 1047 阅读 · 0 评论