设计模式
文章平均质量分 82
Ybb_studyRecord
这个作者很懒,什么都没留下…
展开
-
设计模式-State状态模式
设计模式-State状态模式什么是State状态模式优缺点优点缺点角色实现抽象状态环境角色具体状态总结什么是State状态模式在软件开发过程中,应用程序中的部分对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态就会发生改变,从而使其行为也发生改变。如人都有高兴和伤心的时候,不同的情绪有不同的行为,当然外界也会影响其情绪变化。状态(State)模式的定义:对有状态的对象,把复杂的“判断原创 2021-11-03 20:53:35 · 127 阅读 · 0 评论 -
设计模式-TemplateMethod模板方法
设计模式-TemplateMethod模板方法什么是模板方法角色优缺点优点缺点适用场景实现创建一个抽象类创建扩展的子类测试什么是模板方法 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 使用了JAVA的继承机制,在抽象类中定义一个模板方法,该方法引用了若干个抽象方法(由子类实现)或具体方法(子类可以覆盖重写); 其实就是JAVA的继承以及抽象方法、重写覆盖的使用; 注意:为防止恶意操作,一般模板方法都加上 fi原创 2021-11-03 20:13:58 · 82 阅读 · 0 评论 -
设计模式-Memento备忘录
设计模式-Memento备忘录什么是备忘录模式角色优缺点优点缺点实现Article(Originator角色)ArticleMemento(Memento角色):ArticleCaretaker(Caretaker角色):测试什么是备忘录模式备忘录模式说白了就是把程序当时的状态记录下来,等到合适的时候就能读取当时的记录,重新返回当时的状态,就和我们玩游戏的存档机制是一样的。角色Originator(生成者):负责生成或者恢复MementoMemento(纪念品、备忘录):Memento 角色会原创 2021-11-03 17:38:45 · 1960 阅读 · 0 评论 -
设计模式-6大设计原则
设计模式-6大设计原则设计模式-6大设计原则6大设计原则开闭原则(Open Close Principle)单一职责原则(Single Responsibility Principle)里氏替换原则(Liskov Substitution Principle)依赖倒置原则(Dependence Inversion Principle)接口隔离原则(Interface Segregation Principle)迪米特法则(Law Of Demeter)设计模式-6大设计原则6大设计原则可维护性原创 2021-11-03 17:20:50 · 130 阅读 · 0 评论 -
设计模式-Prototype原型模式
原型模式什么是原型模式克隆浅克隆深克隆优缺点优点缺点使用场景实现总结什么是原型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。所发动创建的对象只需要知道原型对象的类型就可以获得更多的原型实例对象,至于这些原型对象时如何创建的根本不需要关心。即创建一个对象之后的多个对象都可以拷贝原型来创建。克隆克隆,就是复制一个对象的副本浅克隆浅克隆是指克隆得到的对象基本类型的值改变了,而源对象的值不会变。但如果被克隆对象引用类型的值改变了,那么源对象的值同样会改变,因为引用类型在栈内原创 2021-11-02 10:37:37 · 74 阅读 · 0 评论 -
设计模式-Command命令模式
设计模式-Command命令模式什么是Command命令模式角色优缺点优点缺点使用场景实现操作接口操作对象具体的操作测试总结什么是Command命令模式命令模式(Command Pattern)是一种数据驱动的设计模式。Command有时也被成为事件(event)。它与“事件驱动编程”中的事件是一样的意思。意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务原创 2021-11-01 22:45:10 · 184 阅读 · 0 评论 -
设计模式-Bridge桥接模式
Bridge桥接模式Bridge桥接模式角色优缺点优点缺点使用场景实现Bridge桥接模式解耦抽象和实现,使得两者可以独立的变化。桥接模式(Bridge Pattern) 也称为 桥梁模式、接口(Interfce)模式 或 柄体(Handle and Body)模式,隶属对象结构型模式。桥接模式 类似于多重继承方案,但是多重继承方案往往违背了类得单一职责原则,其复用性比较差,桥接模式 是比多重继承更好的替代方案。桥接模式 的核心在于 解耦抽象和实现。注:此处的 抽象 并不是指 抽象类 或 接口原创 2021-11-01 18:57:32 · 195 阅读 · 0 评论 -
设计模式-Adapter适配器
Adapter适配器什么是Adapter适配器什么是Adapter适配器原创 2021-11-01 18:24:20 · 155 阅读 · 0 评论 -
设计模式-Builder建造者
设计模式-Builder构建器什么是构建器角色优缺点优点缺点适用场景注意事项实现产品类Builder 接口具体建造者(ConcreteBuilder)指挥者(Director)客户端使用通过链式调用优化(非常推荐)地形构建器建造者模式与抽象工厂模式的比较总结什么是构建器分离复杂对象的构建和表示同样的构建过程可以创建不同的表示建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Buil原创 2021-10-31 23:36:51 · 122 阅读 · 0 评论 -
设计模式 -Visitor访问者
设计模式 -Visitor访问者什么是访问者模式角色使用场景实现优缺点优点缺点什么是访问者模式在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式角色Visitor:接口或者抽象类,定义了对每个 Element 访问的行为,它的参数就是被访问的元素,它的方法个数理论上与元素的个数是一样的,因此,访问者模式要求元素的类型要稳定,如果经常添加、移除元素类,必然会导致频原创 2021-10-31 22:56:11 · 84 阅读 · 0 评论 -
设计模式-Iterator迭代器
设计模式-Iterator迭代器什么是迭代器模式角色优缺点优点缺点适用场景实现集合接口迭代器接口数组实现链表实现测试什么是迭代器模式迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。Java 开发过程中遍历是常用的。如下边程序for(int i =0 ;i<arr.length;i++){ System.out.println(arr[i]);}角色Iterator(迭代器)该角色责任定义按顺序逐个遍历元素的接口。程原创 2021-10-31 20:17:49 · 69 阅读 · 0 评论 -
设计模式-Proxy代理模式
设计模式-Proxy代理模式什么是代理模式为什么要用代理模式角色优缺点优点缺点适用场景注意事项静态代理实现公用接口真实类的请求创建代理类测试静态代理总结动态代理编写动态处理器测试动态代理总结CGLIB动态代理创建CGLIB代理类CGLIB代理总结什么是代理模式在软件开发中,也有一种设计模式可以提供与代购网站类似的功能。由于某些原因,客户端不想或不能直接访问一个对象,此时可以通过一个称之为“代理”的第三者来实现间接访问,该方案对应的设计模式被称为代理模式。 代理模式是一种应用很广泛的结构型设计模式,原创 2021-10-31 19:14:34 · 387 阅读 · 0 评论 -
设计模式-flyweight享元模式
设计模式-flyweight什么是享元模式角色享元模式和单例模式的异同享元模式的优缺点优点:缺点:享元模式的使用场景实现池子实现类经典线程池总结什么是享元模式享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。“享”是共享的意思,“元”指的是元件,也就是小颗粒的东西,享元顾名思义便是共享小原创 2021-10-26 17:13:40 · 131 阅读 · 0 评论 -
设计模式-composite组合模式
设计模式-composite组合模式什么是组合模式角色模式透明方式安全方式优缺点优点缺点适用场景实现创建员工类测试类树节点实现组合组合模式的扩展什么是组合模式又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。 在现实生活中,存在很多“部分-整体”的关系,例如,大学中的部门与学院、总公司中的部门与分公司原创 2021-10-26 16:45:04 · 107 阅读 · 0 评论 -
设计模式-Observer观察者模式
设计模式-Observer观察者模式什么是观察者模式观察者角色优缺点优点缺点适用场景实现抽象被观察者创建被观察者对象抽象观察者创建观察者对象测试叫醒案例总结什么是观察者模式 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者角色抽象被观察者角色:定义了动态增加、删除以及通知原创 2021-10-26 15:44:21 · 89 阅读 · 0 评论 -
设计模式-ChainOfResponsibility责任链
设计模式-ChainOfResponsibility责任链什么是责任链模式角色优缺点优点缺点适用场景实现抽象的记录器类具体处理者控制台日志错误日志文件日志客户类filter责任链实现责任链模式的纯与非纯模式什么是责任链模式使多个对象都有机会处理请求,从而避免请求的发送者与请求处理者耦合在一起。将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的原创 2021-10-25 22:49:22 · 213 阅读 · 0 评论 -
设计模式-Decorator装饰器
设计模式-Decorator装饰器设计模式-Decorator装饰器角色优缺点适用场景装饰器模式与适配器模式的比较实现咖啡接口原味咖啡装饰器类具体的装饰器类添加牛奶添加糖客户端使用总结设计模式-Decorator装饰器允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成原创 2021-10-18 22:54:53 · 82 阅读 · 0 评论 -
设计模式-Facade门面-Mediator调停者
门面模式(对外)一站式解决方案一个客户想要去办一件事,结果呢,到了公司之后,要先到财务部,财务部说你需要人事部的申请单,客户去了人事部,人事部说你需要运营部签字,客户又跑去运营部签字…跑来一圈之后才把事情给办好,这个时候他就特别想要有一个一站式解决的方案,如下图客户过来直接找客服,客服帮他去跟公司内部沟通,什么都不需要客户操心,这就是一个门面模式的模型。就相当于我们有很多不同功能的方法,接口等,我们写了一个管家来统一管理这些方法。然后对外只需要来调用管家这个接口就可以了。门面模式:外部与一个子系统原创 2021-10-16 15:00:01 · 110 阅读 · 0 评论 -
设计模式-FactoryMethod-工厂模式
设计模式-FactoryMethod-工厂模式设计模式-FactoryMethod-工厂模式简单工厂设计模式抽象工厂方法设计模式总结设计模式-FactoryMethod-工厂模式工厂模式是用来生产对象 .使用工厂来生产对象,我们就只和工厂打交道就可以了,彻底和对象解耦,如果要更换对象,直接在工厂里更换该对象即可,达到了与对象解耦的目的;所以说,工厂模式最大的优点就是:解耦简单工厂设计模式先将产品类抽象出来,比如,汽车和飞机都属于可移动的,抽象出来一个Moveable,飞机和汽车就是具体的产品类,然后原创 2021-09-01 16:56:39 · 71 阅读 · 0 评论 -
设计模式-Strategy-策略模式
设计模式-Strategy-策略模式设计模式-Strategy-策略模式1.设计模式-Strategy-策略模式指的是对象具备某个行为,但是在不同的场景中,该行为有不同的实现算法。比如一个人的交税比率与他的工资有关,不同的工资水平对应不同的税率。策略模式 使用的就是面向对象的继承和多态机制,从而实现同一行为在不同场景下具备不同实现。策略模式 本质:分离算法,选择实现主要解决在有多种算法相似的情况下,使用 if…else 或 switch…case 所带来的复杂性和臃肿性。从 UML 类图中,原创 2021-08-29 16:42:23 · 148 阅读 · 0 评论 -
设计模式-Singleton-单例模式(饿汉,懒汉,内部类,枚举)
设计模式-Singleton-单例模式设计模式-Singleton-单例模式1.饿汉模式2.懒汉模式3.静态内部类方法4.枚举设计模式-Singleton-单例模式只需要一个实例场景:1.各种资源的加载2.各种Factory1.饿汉模式1.用JVM去保证线程安全2.类加载就实例化3.简单实用,推荐/** * 饿汉式 * 类加载到内存后,就实例化一个单例,JVM保证线程安全 * 简单实用,推荐使用! * 唯一缺点:不管用到与否,类装载时就完成实例化 * Class.forName原创 2021-08-29 15:44:01 · 99 阅读 · 0 评论