软件设计模式
文章平均质量分 93
本栏主要讲解软件设计模式相关知识点,代码由Java实现。
哥的时代
CSDN优质创作者、华为云云享专家,阿里云专家博主,曾获国家级荣誉一项,省级荣誉五项,并持有专利三项、软件著作权三项。主要学习研究java领域、后端开发,时代为你保驾护航,欢迎大家一起学习交流。
展开
-
设计模式之六大设计原则
一、开闭原则二、里氏代换原则三、依赖倒转原则四、接口隔离原则五、迪米特法则六、合成复用原则在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。以上就是设计模式之六大设计原则的相关知识点,希望对你有所帮助。积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!原创 2024-01-12 09:54:35 · 2713 阅读 · 103 评论 -
设计模式之命令模式【行为型模式】
一、概述二、结构三、案例实现四、优缺点五、使用场景六、JDK源码解析日常生活中,我们出去吃饭都会遇到下面的场景。将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行存储、传递、调用、增加与管理。以上就是设计模式之命令模式【行为型模式】的相关知识点,希望对你有所帮助。积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!原创 2024-01-11 09:53:58 · 1266 阅读 · 0 评论 -
设计模式之观察者模式【行为型模式】
一、概述二、结构三、案例实现四、优缺点五、使用场景六、JDK中提供的实现又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。以上就是设计模式之观察者模式【行为型模式】的相关知识点,希望对你有所帮助。积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!原创 2024-01-10 09:58:19 · 1172 阅读 · 1 评论 -
设计模式之状态模式【行为型模式】
一、概述二、结构三、案例实现四、优缺点五、使用场景【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果电梯门现在处于运行时状态,就不能进行开门操作,而如果电梯门是停止状态,就可以执行开门操作。类图如下://电梯的4个状态//开门状态//关门状态//运行状态//停止状态//设置电梯的状态//电梯的动作//声明一个记录当前电梯的状态@Override。原创 2024-01-09 09:37:57 · 1819 阅读 · 22 评论 -
设计模式之责任链模式【行为型模式】
一、概述二、结构三、案例实现四、优缺点五、源码解析在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这增加了难度。这样的例子还有很多,如找领导出差报销、生活中的“击鼓传花”游戏等。原创 2024-01-09 09:37:25 · 1303 阅读 · 2 评论 -
设计模式之策略模式【行为型模式】
一、概述二、结构三、案例实现四、优缺点五、使用场景六、JDK源码解析先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,可以选择Idea进行开发,也可以使用eclipse进行开发,也可以使用其他的一些开发工具。 该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。原创 2024-01-08 11:01:59 · 1559 阅读 · 18 评论 -
设计模式之模板方法模式【行为型模式】
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。模板方法模式策略模式命令模式职责链模式状态模式观察者模式中介者模式迭代器模式访问者模式备忘录模式。原创 2024-01-08 11:01:10 · 1104 阅读 · 0 评论 -
设计模式之解释器模式【行为型模式】
一、概述二、结构三、案例实现四、优缺点五、使用场景如上图,设计一个软件用来进行加减计算。我们第一想法就是使用工具类,提供对应的加法和减法的工具方法。//用于两个整数相加//用于两个整数相加//用于n个整数相加sum += i;return sum;上面的形式比较单一、有限,如果形式变化非常多,这就不符合要求,因为加法和减法运算,两个运算符与数值可以有无限种组合方式。比如 1+2+3+4+5、1+2+3-4等等。原创 2024-01-14 11:04:21 · 918 阅读 · 31 评论 -
设计模式之备忘录模式【行为型模式】
一、概述二、结构三、案例实现1、 “白箱”备忘录模式2、“黑箱”备忘录模式四、优缺点五、使用场景备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,很多软件都提供了撤销(Undo)操作,如 Word、记事本、Photoshop、IDEA等软件在编辑时按 Ctrl+Z 组合键时能撤销当前操作,使文档恢复到之前的状态;原创 2024-01-14 11:04:07 · 287 阅读 · 0 评论 -
设计模式之访问者模式【行为型模式】
一、概述二、结构三、案例实现四、优缺点五、使用场景六、扩展封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。以上就是设计模式之访问者模式【行为型模式】的相关知识点,希望对你有所帮助。积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!原创 2024-01-13 10:19:36 · 712 阅读 · 17 评论 -
设计模式之迭代器模式【行为型模式】
一、概述二、结构三、案例实现四、优缺点五、使用场景六、JDK源码解析提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。以上就是设计模式之迭代器模式【行为型模式】的相关知识点,希望对你有所帮助。积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!原创 2024-01-13 10:19:26 · 286 阅读 · 0 评论 -
设计模式之中介者模式【行为型模式】
一、概述二、结构三、案例实现四、优缺点五、使用场景一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,即不利于类的复用,也不稳定。例如在下左图中,有六个同事类对象,假如对象1发生变化,那么将会有4个对象受到影响。如果对象2发生变化,那么将会有5个对象受到影响。也就是说,同事类之间直接关联的设计是不好的。原创 2024-01-12 09:53:57 · 397 阅读 · 1 评论 -
设计模式之享元模式【结构型模式】
一、概述二、结构三、案例实现四、优缺点和使用场景五、JDK源码解析 运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。以上就是设计模式之享元模式【结构型模式】的相关知识点,希望对你有所帮助。积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!原创 2024-01-07 11:55:27 · 1435 阅读 · 28 评论 -
设计模式之组合模式【结构型模式】
一、概述二、结构三、案例实现四、组合模式的分类五、优点六、使用场景 对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可是容器对象也可以是叶子对象。原创 2024-01-07 09:42:37 · 1275 阅读 · 1 评论 -
设计模式之外观模式【结构型模式】
一、概述二、结构三、案例四、使用场景五、源码解析有些人可能炒过股票,但其实大部分人都不太懂,这种没有足够了解证券知识的情况下做股票是很容易亏钱的,刚开始炒股肯定都会想,如果有个懂行的帮帮手就好,其实基金就是个好帮手,支付宝里就有许多的基金,它将投资者分散的资金集中起来,交由专业的经理人进行管理,投资于股票、债券、外汇等领域,而基金投资的收益归持有者所有,管理机构收取一定比例的托管管理费用。 又名门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。原创 2024-01-06 09:52:21 · 1325 阅读 · 0 评论 -
设计模式之桥接模式【结构型模式】
现在有一个需求,需要创建不同的图形,并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系:我们可以发现有很多的类,假如我们再增加一个形状或再增加一种颜色,就需要创建更多的类。试想,在一个有多种可能会变化的维度的系统中,用继承方式会造成类爆炸,扩展起来不灵活。每次在一个维度上新增一个具体实现都要增加多个子类。为了更加灵活的设计系统,我们此时可以考虑使用桥接模式。 将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。原创 2024-01-05 09:24:36 · 1662 阅读 · 11 评论 -
设计模式之装饰者模式【结构型模式】
一、概述二、结构三、案例四、使用场景五、JDK源码解析六、代理和装饰者的区别我们先来看一个快餐店的例子。快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。使用继承的方式存在的问题:扩展性不好如果要再加一种配料(火腿肠),我们就会发现需要给FriedRice和FriedNoodles分别定义一个子类。如果要新增一个快餐品类(炒河粉)的话,就需要定义更多的子类。产生过多的子类。原创 2024-01-05 09:24:00 · 1793 阅读 · 67 评论 -
设计模式之适配器模式【结构型模式】
一、概述二、结构三、类适配器模式四、对象适配器模式五、应用场景六、JDK源码解析如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。所以就需要一个插座转换器,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地能使用。生活中这样的例子很多,手机充电器(将220v转换为5v的电压),读卡器等,其实就是使用到了适配器模式。原创 2024-01-04 09:17:26 · 1450 阅读 · 4 评论 -
设计模式之代理模式【结构型模式】
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。代理模式适配器模式装饰者模式桥接模式外观模式组合模式享元模式由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。原创 2024-01-04 09:16:57 · 949 阅读 · 0 评论 -
设计模式之建造者模式【创造者模式】
一、概述二、结构三、实例四、优缺点五、使用场景六、模式扩展七、创建者模式对比1、工厂方法模式VS建造者模式2、抽象工厂模式VS建造者模式将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离了部件的构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;原创 2024-01-03 12:28:10 · 1389 阅读 · 16 评论 -
设计模式之原型模式【创造者模式】
一、概述二、结构三、实现四、案例五、使用场景六、扩展(深克隆)用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。以上就是设计模式之原型模式【创造者模式】的相关知识点,希望对你有所帮助。积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!原创 2024-01-03 12:27:22 · 1318 阅读 · 0 评论 -
设计模式之工厂设计模式【创造者模式】
一、概述二、简单工厂模式三、工厂方法模式四、抽象工厂模式五、模式扩展六、JDK源码解析-Collection.iterator方法需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。原创 2024-01-02 09:55:09 · 1826 阅读 · 57 评论 -
设计模式之单例设计模式【创造者模式】
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。单例模式工厂方法模式抽象工程模式原型模式建造者模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。原创 2024-01-02 09:54:34 · 963 阅读 · 0 评论 -
设计模式之初始设计模式和UML图
一、设计模式概述1、 软件设计模式的产生背景2、软件设计模式的概念3、学习设计模式的必要性4、设计模式分类二、UML图1、类图概述2、类图的作用3、图表示法3.1、类的表示方式3.2、类与类之间关系的表示方式3.2.1、关联关系3.2.2、聚合关系3.2.3、组合关系3.2.4、依赖关系3.2.5、继承关系3.2.6、实现关系"设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。原创 2023-12-31 09:13:44 · 2157 阅读 · 47 评论