![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 52
设计模式
G::A
这个作者很懒,什么都没留下…
展开
-
设计模式 —— 解释器模式
SymbolExpression是一个空实现,通过继承让子类实现相应的方法。SubExpressin实现减法,addExpression实现加法。给的一段语言,给出语法规则,解释器用来解释这段语句并输出结构。非终结符:在编程语言的上下文中,你可以把非终结符看作是语言的。VarExpression:根据变量的名称获取具体的值。终结符:在编程语言的上下文中,你可以把终结符看作是。Expression: 获取具体的值。原创 2023-07-31 11:09:49 · 37 阅读 · 0 评论 -
设计模式自用笔记 —— 备忘录模式
备忘录管理对象: RoleStateCaretaker:聚合备忘录,提供获取和设置备忘录的方法.用于备忘录的保存。游戏角色类: 发起人.通过new备忘录对象来保存角色状态及功能.通过读取备忘录可以复原角色状态.备忘录存储的是发起人【宽接口】的数据状态。管理者【窄接口】不能访问和修改备忘录。memento对象可以在任意地方被访问与修改.故引申出黑箱备忘录.,这样可以仅为发起人提供宽接口,对其他类提供窄接口.宽窄指的是能否看到和修改备忘录内的数据.备忘录类设置成游戏角色类的内部类。将备忘录角色作为宽接口.原创 2023-07-30 21:11:56 · 49 阅读 · 0 评论 -
设计模式自用笔记 —— 访问者模式
如果通过this指定出具体的变量,就可以在运行时决定应调用哪个方法。具体而言,在动物类中通过重写某方法实现动态分派;同时,在每个继承子类中,将Excute作为形成,通过this作为参数调用exectute的execute方法,实现后期绑定。==基于的原理就是this的指向是具体的,即当前子类。==访问者模式就实现了双分配。封装一些用于某种数据结构的各种元素的操作,它可以在不改变数据结构的前提下定义用于这些元素的新操作。Home: 对象结构角色。聚合所有的animal,并以person为参数进行喂食动作。原创 2023-07-30 17:37:58 · 52 阅读 · 0 评论 -
设计模式自用笔记 —— 迭代器模式
StudentIterator : 抽象迭代器StudentAggregate : 抽象聚合类,可有可无。主要是再封装一下迭代器,使其与添加、删除等功能放在一个类内。Student :StudentIeratorImpl : 具体迭代器角色类,聚合了List。StudentAggregateImpl :具体聚合类,可有可无。ArrayList就是一个具体聚合类。原创 2023-07-29 22:29:01 · 53 阅读 · 0 评论 -
设计模式自用笔记 —— 中介者模式
MeditorStructure: 具体中介者,聚合HouseOwner。某个对象与多个对象有关系。若修改该对象,其他对象也要跟着修改。HouseOwener: Teneat租房子:具体同事类。抽象同事类是个抽象类,需聚合中介者实现公共功能。中介者:负责注册和转发同事信息。Meditor: 抽象中介者。Person: 抽象同事类。同事和中介之间相互聚合。原创 2023-07-29 11:31:49 · 52 阅读 · 0 评论 -
设计模式 —— 观察者模式
抽象主题:就是发布者。发布者通过聚合抽象观察者的方式操作每个观察者。观察者就是订阅者。原创 2023-07-28 21:52:39 · 34 阅读 · 0 评论 -
设计模式 —— 状态模式
Context: 环境类。聚合LifeState,以实现具体的状态操作和初始化。聚合具体状态类的final static常量,以实现行为操作。LifeState:用来封装环境中特定的对象。Opening等4个具体状态类。不同的操作可以改变状态。原创 2023-07-28 20:19:46 · 26 阅读 · 0 评论 -
设计模式 —— 责任链模式
因为每个对象的处理权限不同,顺着请求链往下走直到遇到能够处理该请求的对象。原创 2023-07-28 14:53:52 · 57 阅读 · 0 评论 -
设计模式—— 命令模式
将命令发出者与命令接收者解耦,通过一个中间对象(命令类)来连接二者,命令类中实现命令接受方法与命令调用方法。Watiter:调用者,持有并调用多个Command。OrderComamd:具体命令类,继承抽象命令类。SeniorCheif: 执行者。Command:抽象命令类。执行者和Order订单。原创 2023-07-28 14:19:10 · 27 阅读 · 0 评论 -
设计模式 —— 策略模式
很常用!将职责与实现分离。原创 2023-07-28 11:19:32 · 35 阅读 · 0 评论 -
设计模式—— 模板方法模式
钩子方法:由抽象类声明并且实现,子类也可以选择加以扩展。通常抽象类会给出一个空的钩子方法,也就是没有实现的扩展。它和具体方法在代码上没有区别,不过是一种意识的区别;而它和抽象方法有时候也是没有区别的,就是在子类都需要将其实现的时候。而不同的是抽象方法必须实现,而钩子方法可以不实现。模板方法固定了基本方法的执行顺序,应该用final修饰,以禁止子类的重写。倒油、热油、翻炒是公用一致的,是具体方法。到蔬菜、倒调料品 是抽象方法。原创 2023-07-28 10:07:34 · 54 阅读 · 1 评论 -
设计模式——享元模式
在任何装箱操作时,都会尝试获取缓存作为Integer变量的指向。如果获取不到才会尝试去new一个Integer对象。jvm的众多池就是利用了享元模式。如串池、IntegerCache等。首先明确,这是两个截然不同的概念。所谓自动装箱是自动将int类型转变为Integer类型。,并在工厂中预先放置具体享元(HashMap存放),且不开放更改HashMap的接口。实际上自动装箱操作的底层都是调用valueOf方法。注意:装箱没有数值范围限制,任何范围都可以装箱。内部状态:抽象享元模式、具体享元。原创 2023-07-27 19:55:01 · 90 阅读 · 1 评论 -
设计模式 —— 组合模式
用于把一组相似的对象当成单一对象。它依据树形结构来组合对象,用来表示部分与整体层次。将整体(树枝节点)与部分(叶子节点)进行一致性对待。抽象根节点: MenuComponet(抽象类,将仅需要树枝节点实现的方法,设置为非抽象非法;都需要实现的方法,设置为抽象方法)叶子节点:MenuItem。原创 2023-07-27 19:18:46 · 48 阅读 · 1 评论 -
设计模式 —— 外观模式
一个大的on/off方法,调用所有的子系统角色的on/off方法,来实现所有子系统角色的统一的控制。又名门面模式,为多个子系统提供一个一致的接口。外部程序不用关心子系统的细节。原创 2023-07-27 16:05:59 · 33 阅读 · 1 评论 -
设计模式 —— 桥接模式
将抽象与实现分离,使其可以灵活变化。使用组合来代替继承关系来实现。抽象化角色: OperatingSystem,聚合了实现化角色。装饰者模式是主体与附加功能的解耦,桥接是抽象与具体的解耦。具体实现化角色:AVIFile,RMVB File.扩展抽象化角色:Windows、Mac。实现化角色: VideoFile.原创 2023-07-27 15:14:08 · 55 阅读 · 1 评论 -
设计模式笔记 —— 装饰者模式
【装饰者类聚合地目的是为了使用具体构建角色/继承地目的是为了让装饰者角色的父类的父类为抽象构建角色,从而抽象构建的变量也能够指向具体装饰者角色】 因此聚合是实现装饰者模式的核心。了FastFood(抽象类,抽象构建角色). FriedRice和noodles是具体构建角色,继承了FastFood。Egg和Bach是具体装饰角色,在不改变现有对象结构的情况下,动态地给对象增加一些额外功能。Garnish是装饰者类,它。原创 2023-07-27 10:28:50 · 68 阅读 · 1 评论 -
设计模式 —— 建造者模式
将对象的构建与表示分离。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。用户操作Direcor控制哪个builder创建对象,并返回对象。指导了哪个构建者构建产品。抽象类builder可以和director整合在一起,但违法单一职责原则。具体而言,就是通过在类中定义static final的内部类,通过链式编程来实现。在lombok中,直接.Builder.参数名(参数值)就可以使用。原创 2023-07-24 19:24:19 · 32 阅读 · 0 评论 -
设计模式笔记 —— 适配器模式
StreamDecoder的作用是字节流转换为字符流,实现了字符流Reader接口,通过将适配者作为成员变量实现字节流的读取,并完成转换。(合成复用原则(Composite Reuse Principle,也称为组合/聚合复用原则)是面向对象设计中的一种指导原则,它主张在软件复用时,应优先使用组合或聚合关系实现,其次才考虑使用继承。这样,只能传入适配者类接口的调用者类就可以将该适配器类作为参数传入。通过适配者类将适配器类转换为目标接口。适配器类继承适配者类,实现目标类接口。的方式实现适配器类。原创 2023-07-26 22:25:50 · 65 阅读 · 1 评论 -
设计模式自用笔记 —— 代理模式
动态代理不需要定义代理类的.java源文件——>jdk运行期间动态创建class字节码并加载JVM——>代理对象在程序运行的过程中动态在内存构建,可以灵活的进行业务功能的切换。代理模式是在不修改目标对象(被代理对象)的基础上,通过代理对象(扩展代理类),进行一些功能的附加与增强——>静态代理是在不改变源代码的基础上增加新的功能。通过定义代理工厂,利用Proxy的newProxy方法,实现代理对象的创建。它不能代理final修饰的类\方法(final修饰的类不能有子类,final修饰的方法不能重新)原创 2023-07-26 18:57:11 · 46 阅读 · 1 评论 -
设计模式 ——原型模式
Clonable就是抽象原型类。一个类实现Cloneable接口是为了向Object.clone()方法表明,该方法对该类的实例进行字段对字段的复制是合法的。通过序列化的方式可以实现深拷贝。也可以通过挨个实现成员对象的值拷贝实现深拷贝。java Object中的clone实现浅拷贝。以已经创建的对象作为原型,通过复制该原型对象。对于值数据类型,内容相同。对于值数据类型,内容相同。原创 2023-07-24 14:51:27 · 31 阅读 · 0 评论 -
设计模式自用笔记 —— 工厂模式
工厂方法模式真正实现了开闭原则,但是一个工厂只能建造一种类造成了容易发生类爆炸。故提出抽象工厂模式,它是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。简单工厂模式最大的缺点是当有新产品要加入到系统中时,必须要修改工厂类,加入必要的处理逻辑,这就违背了“开闭原则”。有多个类,它们(产品) 类似但有细微差别,并且可能不断有新的相似类被后续创建,如何优雅的管理这些类的创建呢?具体来说,就是在简单工厂的基础上再抽象一层,具体工厂是抽象工厂类的子类,由具体工厂实例化一种对象。原创 2023-07-24 13:48:37 · 51 阅读 · 1 评论 -
设计模式自用笔记 —— 单例模式
创建者模式:处理对象创建的设计模式结构型模式:是软件设计模式中的一类,用于解决在系统中对象的组合和类之间的关系。这些模式关注如何通过将对象和类组合成更大的结构来实现灵活和可维护的系统。行为型模式:行为型模式(Behavioral patterns)是软件设计模式中的一类,用于处理对象之间的交互和职责分配。这些模式关注对象之间的通信和协作方式,以实现灵活和可复用的系统。原创 2023-07-12 19:37:52 · 63 阅读 · 1 评论