设计模式
文章平均质量分 80
Java设计模式
饺子泡牛奶
初级软件测试助理
展开
-
设计模式-基本概念
一、设计模式介绍设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。该概念是1990年从建筑设计领域引入到计算机科学。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。设计模式的本质是:软件的维护性,通用性,并降低软件的复杂度。出现的节点:面向对象特性 -> 功能模块(设计模式+算法(数据结构)) -> 框架(使用到多种设计模式) -> 架构(服务器集群)。二、设计模式类型设计模式分为三种类型,共23种:原创 2022-03-27 08:08:24 · 714 阅读 · 0 评论 -
设计模式-单例模式
章节目录:一、单例模式介绍二、单例模式常见写法方式一:*饿汉式(静态常量写法)方式二:*饿汉式(静态代码块写法)方式三:懒汉式(线程不安全写法)方式四:懒汉式(线程安全,同步写法)方式五:*双重检查机制方式六:*静态内部类方式七:*枚举三、该模式在JDK中的应用一、单例模式介绍1. 定义: 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得对象实例的方法。(静态方法)2. 使用场景: 需要频繁创建和销毁的对象、创建对象时耗时过多或耗费原创 2022-04-02 21:38:10 · 80 阅读 · 0 评论 -
设计模式-工厂模式
一、工厂模式介绍目的: 工厂模式的主要解决的问题是,将原来分布在各个地方的对象创建过程单独抽离出来,交给工厂类负责创建。 其他地方想要使用对象直接找工厂(即调用工厂的方法)获取对象。意义: 将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到主项目的依赖关系解耦。从而提高项目的拓展和维护性。三种实现方式:简单工厂工厂方法抽象工厂二、简单工厂模式2.1 示例关系:2.2 代码实现:/* * * 移动电话接口。 */interface IMobile { /原创 2022-04-02 21:41:35 · 126 阅读 · 0 评论 -
设计模式-原型模式
一、原型模式介绍原型模式(Prototype)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节。使用前提:实现Cloneable接口。(运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。)重写Object类中的clone()方法。(返回对象的一个拷贝)两种拷贝方式:浅拷贝深拷贝二、浅拷贝2.1 示例关系:2.2 代码实现:/* * * 定原创 2022-04-02 21:43:38 · 78 阅读 · 0 评论 -
设计模式-建造者模式
一、建造者模式介绍定义: 建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部具体的构建细节。四个角色:Product(产品角色):一个具体的产品对象。Builder(抽象建造者):创建一个Product对象的各个部件指定的接口/抽象类。Conc原创 2022-04-02 21:45:07 · 84 阅读 · 0 评论 -
设计模式-适配器模式
一、适配器模式介绍适配器模式(Adapter Pattern):别名为包装器(Wrapper),是将某个类的接口转换成客户端期望的另一个接口表示。主要目的是兼容性,让原本因接口不能匹配不能一起工作的两个类可以协同工作。适配器模式属于结构型模式。主要分为三类:类适配器模式对象适配器模式接口适配器模式工作原理: 用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法。接下来以生活中充电的例子说明该模式:诉求是将220V的交流电通过适配器输出目标为5V的电压,使得能够满足手原创 2022-04-02 21:47:55 · 94 阅读 · 0 评论 -
设计模式-桥接模式
一、桥接模式介绍桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。桥接模式是一种很实用的结构型设计模式,在软件开发时,如果某个类存在两个独立变化的维度,可以运用桥接模式将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则”。桥接模式角色:抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。提炼原创 2022-04-02 21:50:24 · 366 阅读 · 0 评论 -
设计模式-装饰者模式
一、装饰者模式介绍装饰者模式(Decorator Pattern):动态地将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性。同时,装饰者模式也体现了开闭原则。装饰者模式角色:抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。具体构件(Concrete Component)角色:定义一个将要接收附加责任的类。装饰(Decorator)角色:持有一个构件(Component)对象的实例,并实现一个与抽象构件接口一致的接口。具体装饰(Concrete D原创 2022-04-02 21:51:31 · 75 阅读 · 0 评论 -
设计模式-组合模式
一、组合模式介绍组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。组合模式使得用户对单个对象和组合对象地访问具有一致性。(即:组合能让客户以一致的方式处理个别对象以及组合对象。)组合模式成员角色:Component:它是组合中对象声明接口,适当情况下,实现所有类共有的接口默认行为,用于访问和管理各个子部件。它可以是抽象类或原创 2022-04-02 21:52:46 · 329 阅读 · 0 评论 -
设计模式-外观模式
一、外观模式介绍外观模式(Facade Pattern)也叫过程模式,它属于结构型模式。外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节,隐藏了系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。外观类模式角色:子系统的集合:指模块或者子系统,处理Facade对象指派的任务,它们是功能的实际提供者。外观类(Facade):为调用端提供统一的调用接口,外观类知道哪些子系统负原创 2022-04-02 21:53:43 · 87 阅读 · 0 评论 -
设计模式-享元模式
一、享元模式介绍享元模式(Flyweight Pattern)也叫蝇量模式,主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。它常用与系统底层的开发,解决系统地性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个。享元模式角色:FlyWeight:是抽象的享元角色,它是产品抽象类,定义出对象的外部状态和内部状态。内部状态原创 2022-04-02 21:54:27 · 631 阅读 · 0 评论 -
设计模式-代理模式
章节目录:一、代理模式介绍二、静态代理方式2.1 示例关系:2.2 代码实现:2.3 方式说明:三、动态(JDK)代理方式3.1 示例关系:3.2 代码实现:3.3 方式说明四、Cglib代理方式4.1 示例关系:4.2 依赖引入:4.3 代码实现:4.4 方式说明:五、代理模式总结六、结束语一、代理模式介绍代理模式(Proxy Pattern),属于结构型模式。它为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,这样做的好处是可以在目标对象实现的基础上,增强额外的功能操作(原创 2022-04-03 06:36:11 · 84 阅读 · 0 评论 -
设计模式-模板模式
章节目录:一、模板模式介绍二、模板模式使用2.1 示例关系:2.2 代码实现:三、模板模式总结四、结束语一、模板模式介绍在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。它也叫模板方法模式,这种类型的设计模式属于行为型模式。一般模板方法都加上final关键字,防止子类重写模板方法。此处我们有一个诉求:使用模板模式,制作不同口味的牛奶。二、模板模式使用2.1 示例关系:2.原创 2022-04-03 06:37:41 · 93 阅读 · 0 评论 -
设计模式-命令模式
章节目录:一、命令模式介绍二、命令模式使用2.1 示例关系:2.2 代码实现:三、命令模式总结四 、结束语一、命令模式介绍命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。命令模式使得请求发送者与接收者消除彼此之间的耦合,让对象关系更加灵活。命令模式角色:Receiver 真正的命令执行对象。Command 所有命令。Invo原创 2022-04-03 06:38:50 · 99 阅读 · 0 评论 -
设计模式-访问者模式
章节目录:一、访问者模式介绍二、访问者模式使用2.1 示例关系:2.2 代码实现:三、访问者模式总结四、结束语一、访问者模式介绍在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。主要将数据结构与数据操作分离,解决数据结构和操作耦合性问题。访问者模式角色:抽象访问者角色(Visito原创 2022-04-03 06:40:13 · 475 阅读 · 0 评论 -
设计模式-观察者模式
章节目录:一、观察者模式介绍二、观察者模式使用2.1 示例关系:2.2 代码实现:三、观察者模式总结四、结束语一、观察者模式介绍观察者(Observer Pattern)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式的角色:抽象主题(Subject)角色:也叫抽象目标类,它提供了一个用于保存观察者对象的聚集类和增加、删除观察者对象的方法,以及通知所原创 2022-04-03 06:41:04 · 584 阅读 · 0 评论 -
设计模式-中介者模式
章节目录:一、中介者模式介绍二、中介者模式使用2.1 示例关系:2.2 代码实现:三、中介者模式总结四、结束语一、中介者模式介绍中介者(Mediator Pattern)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。中介者模式角色:抽象中介者(Mediator)角色:它是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法。具体中介者(Concrete Mediator原创 2022-04-03 06:42:27 · 446 阅读 · 0 评论 -
设计模式-迭代器模式
章节目录:一、迭代器模式介绍二、迭代器模式使用2.1 示例关系:2.2 代码实现:三、迭代器模式总结四、结束语一、迭代器模式介绍迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示,它属于行为型模式。迭代器模式角色:Iterator(迭代器):迭代器定义访问和遍历元素的接口。ConcreteIterator (具体迭代器):具体迭代器实现迭代器接口,对该聚合遍历时跟踪当前位置。原创 2022-04-03 06:44:12 · 446 阅读 · 0 评论 -
设计模式-备忘录模式
章节目录:一、备忘录模式介绍二、备忘录模式使用2.1 示例关系:2.2 代码实现:三、备忘录模式总结四、结束语一、备忘录模式介绍备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。该模式又叫快照模式。备忘录模式角色:发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。备忘录(Memento)角色:负责存储发起人的内部状态,在需要的原创 2022-04-03 06:45:19 · 76 阅读 · 0 评论 -
设计模式-解释器模式
章节目录:一、解释器模式介绍二、解释器模式使用2.1 示例关系:2.2 代码实现:三、解释器模式总结四、结束语一、解释器模式介绍解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。文法和句子的概念同编译原理中的描述相同,“文法”指语言的语法规则,而“句子”是语言集中的元素。解释器模式角色:抽象表达式(Abstract Expression原创 2022-04-03 06:46:15 · 107 阅读 · 0 评论 -
设计模式-状态模式
章节目录:一、状态模式介绍二、状态模式使用2.1 示例关系:2.2 代码实现:三、状态模式总结四、结束语一、状态模式介绍在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。状态模式角色:环境类(Context)角色:也称为上下文,它定义原创 2022-04-03 06:47:22 · 224 阅读 · 0 评论 -
设计模式-策略模式
章节目录:一、策略模式介绍二、策略模式使用2.1 示例关系:2.2 代码实现:三、策略模式总结四、结束语一、策略模式介绍策略模式(Strategy Pattern)该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。策略模式的主要角色如下:抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个原创 2022-04-04 06:51:08 · 96 阅读 · 0 评论 -
设计模式-责任链模式
章节目录:一、责任链模式介绍二、责任链模式使用2.1 示例关系:2.2 代码实现:三、责任链模式总结四、结束语一、责任链模式介绍责任链模式(Chain of Responsibility Pattern)也叫职责链模式。:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。责任链模式的本质是解耦请求与处理,让请求在处理链中能进行传递与被处理;理解责任链模式应当理解其模式,而不原创 2022-04-04 06:52:27 · 505 阅读 · 0 评论