设计模式
文章平均质量分 93
林寻星辰
这个作者很懒,什么都没留下…
展开
-
【编程导航】设计模式学习笔记
软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。统一建模语言(Unified Modeling Language,UML)是用来原创 2023-01-02 20:57:58 · 937 阅读 · 3 评论 -
设计模式之行为型模式补充(解释器模式)
如上图,设计一个软件用来进行加减计算。我们第一想法就是使用工具类,提供对应的加法和减法的工具方法。上面的形式比较单一、有限,如果形式变化非常多,这就不符合要求,因为加法和减法运算,两个运算符与数值可以有无限种组合方式。比如 1+2+3+4+5、1+2+3-4等等。显然,现在需要一种翻译识别机器,能够解析由数字以及 + - 符号构成的合法的运算序列。如果把运算符和数字都看作节点的话,能够逐个节点的进行读取解析运算,这就是解释器模式的思维。定义:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器原创 2022-12-03 16:48:56 · 80 阅读 · 0 评论 -
设计模式日常学习(七)
【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果电梯门现在处于运行时状态,就不能进行开门操作,而如果电梯门是停止状态,就可以执行开门操作。类图如下://电梯的4个状态//开门状态//关门状态//运行状态//停止状态//设置电梯的状态//电梯的动作}}//执行关门动作System.out.println("电梯关门了。。。");原创 2022-12-01 17:27:17 · 169 阅读 · 0 评论 -
设计模式日常学习(七)
【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果电梯门现在处于运行时状态,就不能进行开门操作,而如果电梯门是停止状态,就可以执行开门操作。//电梯的4个状态//开门状态//关门状态//运行状态//停止状态//设置电梯的状态//电梯的动作}@Override}//执行关门动作@OverrideSystem.out.println("电梯关门了。原创 2022-11-28 21:30:02 · 371 阅读 · 0 评论 -
设计模式日常学习(六)
在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。原创 2022-11-26 17:00:18 · 101 阅读 · 0 评论 -
设计模式之终结者模式(七种完整版)
由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。我们先来看一个快餐店的例子。快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。原创 2022-11-22 21:09:39 · 421 阅读 · 0 评论 -
设计模式的日常学习(6)
我们先来看一个快餐店的例子。快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。扩展性不好如果要再加一种配料(火腿肠),我们就会发现需要给FriedRice和FriedNoodles分别定义一个子类。如果要新增一个快餐品类(炒河粉)的话,就需要定义更多的子类。产生过多的子类指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。原创 2022-11-21 20:58:06 · 81 阅读 · 0 评论 -
设计模式日常学习(五)
由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。原创 2022-11-18 22:12:51 · 85 阅读 · 0 评论 -
设计模式日常学习(四)
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离了部件的构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。原创 2022-11-18 00:02:59 · 122 阅读 · 2 评论 -
设计模式日常学习(三)
在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。这些工厂只生产同种类产品,同种类产品称为同等级产品,也就是说:工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级(种类) 的产品,如电器厂既生产电视机又生产洗衣机或空调,大学既有软件专业又有生物专业等。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。原创 2022-11-16 17:18:01 · 115 阅读 · 1 评论 -
设计模式日常学习二
跟着黑马的视频学习设计模式总结记录地址:BV1Np4y1z7BU。原创 2022-11-14 21:01:57 · 70 阅读 · 0 评论 -
设计模式日常学习一
类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。原创 2022-11-14 21:00:42 · 104 阅读 · 0 评论