
设计模式
java设计模式随堂笔记,侵联删
金的三次方
随堂笔记
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[设计模式] 行为型 | 11.访问者模式
[设计模式] 行为型 | 11.访问者模式1.模式定义访问者模式(Visitor Pattern):表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式2. 模式结构访问者模式包含如下角色:Visitor(抽象访问者)ConcreteVisitor(具体访问者)Element(抽象元素)ConcreteElement(具体元素)ObjectStructure(对象结构)抽象访问者类示例代码原创 2020-06-25 16:09:07 · 271 阅读 · 0 评论 -
[设计模式] 行为型 | 10.模板方法模式
[设计模式] 行为型 | 10.模板方法模式1.定义:模板方法模式(Template Method Pattern):定义一个操作中算法的框架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤模板方法是一种类行为型模式2.模式结构模板方法模式包含如下角色:AbstractClass: 抽象类ConcreteClass: 具体子类典型抽象类示例代码public abstract class AbstractClass { /原创 2020-06-25 16:08:38 · 656 阅读 · 0 评论 -
[设计模式] 行为型 | 9.策略模式
[设计模式] 行为型 | 9.策略模式1.模式定义策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化策略模式是一种对象行为型模式2.模式结构策略模式包含如下角色:Context: 环境类Strategy: 抽象策略类ConcreteStrategy: 具体策略类3.模式分析每一个封装算法的类称之为策略(Strategy)类策略模式提供了一种可插入式(Pluggable)算法的实现原创 2020-06-25 16:07:46 · 240 阅读 · 0 评论 -
[设计模式] 行为型 | 8.状态模式
[设计模式] 行为型 | 8.状态模式1.模式定义:状态模式(State Pattern) :允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式2. 模式结构:状态模式包含如下角色:Context: 环境类State: 抽象状态类ConcreteState: 具体状态类3.模式分析:用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题将一个对象的状态从该对象中原创 2020-06-25 16:07:26 · 434 阅读 · 0 评论 -
[设计模式] 行为型 | 7.观察者模式
[设计模式] 行为型 | 7.观察者模式1.模式动机:软件系统:一个对象的状态或行为的变化将导致其他对象的状态或行为也发生改变,它们之间将产生联动2. 模式定义:定义了对象之间一种一对多的依赖关系,让一个对象的改变能够影响其他对象发生改变的对象称为观察目标,被通知的对象称为观察者一个观察目标可以对应多个观察者观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(P原创 2020-06-25 16:05:02 · 360 阅读 · 0 评论 -
[设计模式] 行为型 | 6.备忘录模式
[设计模式] 行为型 | 6.备忘录模式1.模式定义:备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它是一种对象行为型模式,其别名为Token2.模式结构:备忘录模式包含如下角色:Originator: 原发器Memento: 备忘录Caretaker: 负责人原发器示例代码:package designpatterns.memento;public cla原创 2020-06-25 16:04:12 · 437 阅读 · 0 评论 -
[设计模式] 行为型 | 5.中介者模式
[设计模式] 行为型 | 5.中介者模式1.模式动机:网状结构:多对多联系将导致系统非常复杂,几乎每个对象都需要与其他对象发生相互作用,而这种相互作用表现为一个对象与另外一个对象的直接耦合,这将导致一个过度耦合的系统星型结构:中介者模式将系统的网状结构变成以中介者为中心的星型结构,同事对象不再直接与另一个对象联系,它通过中介者对象与另一个对象发生相互作用。系统的结构不会因为新对象的引入带来大量的修改工作2.模式定义:中介者模式(Mediator Pattern)定义:用一个中介对象来原创 2020-06-25 16:03:22 · 301 阅读 · 0 评论 -
[设计模式] 行为型 | 4.迭代器模式
[设计模式] 行为型 | 4.迭代器模式1.模式动机:电视机遥控器与电视机示意图2.模式定义:迭代器模式(Iterator Pattern) :提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示。其别名为游标(Cursor)迭代器模式是一种对象行为型模式3.模式结构:迭代器模式包含如下角色:Iterator: 抽象迭代器ConcreteIterator: 具体迭代器Aggregate: 抽象聚合类ConcreteAggregate: 具体聚合类4.模式分析原创 2020-06-25 16:02:15 · 447 阅读 · 0 评论 -
[设计模式] 行为型 | 3.解释器模式
[设计模式] 行为型 | 3.解释器模式1.模式定义:定义一个语言的文法,并且建立一个解释器来解释该语言中的句子。此处,“语言”是指使用规定格式和语法的代码它是一种类行为型模式2.模式结构:解释器模式包含如下角色:AbstractExpression: 抽象表达式TerminalExpression: 终结符表达式NonterminalExpression: 非终结符表达式Context: 环境类3.模式分析:是一种使用频率相对较低但学习难度相对较大的设计模式,用于描述如原创 2020-06-25 16:01:26 · 182 阅读 · 0 评论 -
[设计模式] 行为型 | 2.命令模式
[设计模式] 行为型 | 2.命令模式1.模式定义命令模式(Command Pattern):将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式2.模式结构命令模式包含如下角色:Command: 抽象命令类ConcreteCommand: 具体命令类Invoker: 调用者Receiver: 接收者3.模式分析原创 2020-06-25 15:59:38 · 231 阅读 · 0 评论 -
[设计模式] 行为型 | 1.职责链模式
[设计模式] 行为型 | 1.职责链模式1.模式动机奖学金审批辅导员、系主任、院长、校长都可以处理奖学金申请表,他们构成一个处理申请表的链式结构,申请表沿着这条链进行传递,这条链就称为职责链职责链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求2.模式定义职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求。将这些对象连接成一条链,并且沿着这条链传递请求,直到原创 2020-06-25 15:58:58 · 261 阅读 · 0 评论 -
[设计模式] 结构型 | 7.代理模式
[设计模式] 结构型 | 7.代理模式1.模式定义代理模式(Proxy Pattern) :给某一个对象提供一个代理,并由代理对象控制对原对象的引用对象结构型模式代理对象可以在客户端和目标对象之间起到中介的作用通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外的新服务2.模式结构代理模式包含如下角色:Subject: 抽象主题角色Proxy: 代理主题角色RealSubject: 真实主题角色(动态代理跟静态代理的区别就是,静态代理中,proxy是自己写的,动态代原创 2020-06-25 15:58:17 · 256 阅读 · 0 评论 -
结构型 | 6.享元模式
享元模式1.模式动机如果一个软件系统在运行时所创建的相同或相似对象数量太多,将导致运行代价过高,带来系统资源浪费、性能下降等问题如何避免系统中出现大量相同或相似的对象,同时又不影响客户端程序通过面向对象的方式对这些对象进行操作呢?享元模式:通过共享技术实现相同或相似对象的重用享元池(Flyweight Pool):存储共享实例对象的地方2.模式定义享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象原创 2020-05-16 23:20:39 · 290 阅读 · 0 评论 -
创建型 | 0.创建型概述
创建型模式 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。 创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。创建型模式隐藏了类的实例的创建细节,通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。创建型模式有以下种类原创 2020-05-15 01:24:18 · 154 阅读 · 0 评论 -
创建型 | 1.简单工厂模式
简单工厂模式1.定义简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式在简单工厂模式中,可以根据参数的不同返回不同类的实例简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。原创 2020-03-16 09:57:56 · 147 阅读 · 0 评论 -
创建型 | 2.工厂方法模式
工厂方法模式1.定义工厂方法模式(Factory Method Pattern)简称工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工...原创 2020-03-16 11:39:38 · 155 阅读 · 0 评论 -
创建型 | 3.抽象工厂模式
抽象工厂模式1.定义抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。 抽象工厂模式中增加了两个概念:产品等级结构:产品等级结构即产品的继承结构,例如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成...原创 2020-03-16 11:51:06 · 326 阅读 · 0 评论 -
创建型 | 4.建造者模式
建造者模式1.定义:建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。将客户端与包含多个部件的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可关注如何逐步创建一个复杂的对象,不同的建造者定义了不同的创建过程2.结原创 2020-05-15 01:20:44 · 143 阅读 · 0 评论 -
创建型 | 5.原型模式
原型模式1. 模式动机复制一个对象,从而克隆出多个与原型对象一模一样的对象——原型模式有些对象的创建过程较为复杂,而且需要频繁创建通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象2. 模式定义原型模式(Prototype Pattern):原型模式是一种对象创建型模式,用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模式允许通过一个原型对象创建一个或多个同类型的其他对象,而无须知道任何创建的细节3. 模式结构原型原创 2020-05-15 01:22:00 · 186 阅读 · 0 评论 -
创建型 | 6.单例模式
单例模式1.模式机动如何保证一个类只有一个实例并且这个实例易于被访问呢?定义一个全局变量可以确保对象随时都可以被访问,但不能防止我们实例化多个对象。一个更好的解决办法是让类自身负责保存它的唯一实例。这个类可以保证没有其他实例被创建,并且它可以提供一个访问该实例的方法。这就是单例模式的模式动机。2.模式定义单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式的要点有三个:某个类只能原创 2020-05-15 01:22:51 · 163 阅读 · 0 评论 -
结构型 | 0.结构型概述
结构型模式结构型模式概述**结构型模式(Structural Pattern)**描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。结构型模式可以分为类结构型模式和对象结构型模式:类结构型模式关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系。对象结构型模式关心类与对象的组合,通过关联关系使得在一个类中定义另一个类的实例对象,然后通过该对象调用其方法。根据“合成复用原则”,在系统中尽量原创 2020-05-15 01:24:51 · 159 阅读 · 0 评论 -
结构型 | 1.适配器模式
适配器模式1.模式定义:适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式定义中所提及的接口是指广义的接口,它可以表示一个方法或者方法的集合2.模式结构:适配器模式包含如下角色:Target:目标抽象类Adapter:适配器类Adaptee:适配者类1)类适配器:2)对象适配器3. 模式分析典型的类适配器示例代码://适配器,类适配原创 2020-05-15 01:25:44 · 425 阅读 · 0 评论 -
结构型 | 2.桥接模式
桥接模式1.模式机动设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案:第一种设计方案是为每一种形状都提供一套各种颜色的版本。第二种设计方案是根据实际需要对形状和颜色进行组合。对于有**两个变化维度(即两个变化的原因)**的系统,采用方案二来进行设计系统中类的个数更少,且系统扩展更为方便。设计方案二即是桥接模式的应用。桥接模式将继承关系转换为关联关系,从而降低了类与类之间的耦合,减少了代原创 2020-05-15 01:26:17 · 617 阅读 · 0 评论 -
结构型 | 3.组合模式
组合模式1.模式机动在树形目录结构中,包含文件和文件夹两类不同的元素在文件夹中可以包含文件,还可以继续包含子文件夹在文件中不能再包含子文件或者子文件夹文件夹–> 容器(Container)文件 --> 叶子(Leaf)如何将容器对象和叶子对象进行递归组合,使得用户在使用时无须对它们进行区分,可以一致地对待容器对象和叶子对象?–>组合模式2.模式定义组合模式(Composite Pattern):组合多个对象形成树形结构以表示**“部分-整体”的原创 2020-05-15 01:28:22 · 380 阅读 · 0 评论 -
结构型 | 4.装饰模式
装饰模式1.模式动机可以在不改变一个对象本身功能的基础上给对象增加额外的新行为是一种用于替代继承的技术,它通过一种无须定义子类的方式给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系引入了装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,以扩展原有类的功能2.模式定义装饰模式(Decorator Pattern) :动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活对象结构型模式以对客户透明的方式动态地给一个对象附加上原创 2020-05-15 01:29:02 · 315 阅读 · 0 评论 -
结构型 | 5.外观模式
外观模式1.模式动机一个客户类需要和多个业务类交互,有时候这些需要交互的业务类会作为一个整体出现引入一个新的外观类(Facade)来负责和多个业务类【子系统(Subsystem)】进行交互,而客户类只需与外观类交互为多个业务类的调用提供了一个统一的入口,简化了类与类之间的交互没有外观类:每个客户类需要和多个子系统之间进行复杂的交互,系统的耦合度将很大引入外观类:客户类只需要直接与外观类交互,客户类与子系统之间原有的复杂引用关系由外观类来实现,从而降低了系统的耦合度一个子系统的外部与其内部的通原创 2020-05-15 01:29:47 · 379 阅读 · 0 评论