
设计模式
文章平均质量分 68
V_S1r
程序猿——FIGHT!
展开
-
设计模式之——命令模式(Command)
定义命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。主要优点通过引入中间件(抽象接口)来降低系统的耦合度。扩展性较好,增加或者删除命令非常方便。增加与删除命令不会影响其他类,且满足“开闭原则”。方便实现 Undo 和 Redo 操作。命令模式可以与后面介绍的备忘录模式结合,实现命令的撤销与恢复。扩展各种软件中的菜单都是通过命令模式对命令进行封装使用原创 2021-04-23 13:19:58 · 183 阅读 · 0 评论 -
设计模式之——备忘录模式(Memento)
定义备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。实现Gof书中的代码实现方法如下:public class MementoPattern { public static void main(String[] args) { Originator or = new Originator(); Caretaker cr =原创 2021-04-21 11:38:07 · 158 阅读 · 0 评论 -
设计模式之——适配器模式(Adapter)
概念定义适配器模式(Adapter) 的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。 简单举个例子:在智能手机兴起之前手机的种类是各式各样的,其充电接口也是不尽相同。当手机在外没电想要借用充电器原创 2021-04-20 10:50:37 · 175 阅读 · 0 评论 -
设计模式之——解释器模式(Interpreter)
定义实现应用原创 2021-04-20 10:50:17 · 247 阅读 · 0 评论 -
设计模式之——模板方法模式(TemplateMethod)
定义模板方法(Template Method)模式的定义:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。所谓的模板方法模式实际上就是钩子函数。实现使用代码举例:首先抽象一个模板对象Methods用于管理方法:abstract class Methods { void template() { method1(); method2(); } abstract原创 2021-04-15 19:00:42 · 186 阅读 · 0 评论 -
设计模式之——状态模式(State)
定义状态(State)模式的定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。简单的说就是:根据状态决定行为应用&实现 在我们以前写代码,遇到根据对象状态要做判断时通原创 2021-04-14 10:35:53 · 263 阅读 · 1 评论 -
设计模式之——原型模式(Prototype)
定义原型(Prototype)模式的定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。应用 在开发系统时可能存在大量相同或相似对象的创建,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源。若是将这些差不多的对象都由同一个原型模板复制后加以修改,就可以解决上述问题原创 2021-04-13 11:46:14 · 153 阅读 · 0 评论 -
设计模式之——桥接模式(Bridge)
定义 桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。抽象化: 其概念是将复杂物体的一个或几个特性抽出去而只注意其他特性的行动或过程。在面向对象就是将对象共同的性质抽取出去而形成类的过程。实现化: &nbs原创 2021-04-11 17:37:58 · 258 阅读 · 0 评论 -
设计模式之——访问者模式(Visitor)
文章目录访问者模式定义特点应用代码讲解使用场景编译器访问者模式定义访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。 简单来说就是在结构不发生改变的情况下对于内部元素进行动态改变的动作。与原创 2021-04-10 18:34:33 · 309 阅读 · 0 评论 -
设计模式之——策略模式
文章目录策略模式(Strategy)定义应用情景使用comparable优化策略模式结构优点:策略模式(Strategy)定义策略(Strategy)模式的定义: 该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。应用情景只看这些理论比较难理解,我通过java程序来举例子:public class Main { p原创 2021-04-09 15:47:58 · 119 阅读 · 0 评论 -
设计模式之——建造者模式(Builder)
概念定义建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。 它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。特点封装性好,构建和表示分离。扩展性好,各个具体的建造者相互独立,有利于系统的解耦。客户端不必知道产品内部组成的原创 2021-04-01 19:14:59 · 163 阅读 · 0 评论 -
设计模式之——迭代器模式(Iterator)
概念定义迭代器(Iterator)模式的定义: 提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。特点 迭代器模式是通过将聚合对象的遍历行为分离出来,抽象成迭代器类来实现的,其目的是在不暴露聚合对象的内部结构的情况下,让外部代码透明地访问聚合的内部数据。迭代器模式具有以下优点:访问一个聚合对象的内容而无须暴露它的内部表示。遍历任务交由迭代器完成,这简化了聚合类。它支持以不同原创 2021-03-31 20:44:55 · 171 阅读 · 0 评论 -
设计模式之——代理模式(Proxy)
文章目录代理模式静态代理定义代码讲解特点动态代理定义代码讲解动态代理机制及特点其他实现代理模式代理模式(Proxy) 的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 简单地说就是我们实际访问目标是通过代理对象来间接访问的,代理就是对目标方法进行增强。静态代理定义原创 2021-03-30 20:19:35 · 171 阅读 · 0 评论 -
设计模式之——观察者模式(Observer)
文章目录概念定义结构应用场景实现java.awt.event.*钩子函数概念定义观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。结构观察者模式的主要角色如下:抽象主题(Subject)角色:也叫抽象目标类,它提供了一个用于保存观察者对象的聚集类和增加、删除观察者对象的方法,以及通知所有观察者的抽象方法。具体主题(Concrete原创 2021-03-28 11:10:01 · 277 阅读 · 0 评论 -
设计模式之——组合模式(Composite)与享元模式(Flyweight)
定义组合(Composite Pattern)模式的定义: 它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式。树状结构专用模式, 有时又叫作整体-部分(Part-Whole)模式 组合模式一般用来描述整体与部分的关系,它将对象组织到树形结构中,顶层的节点被称为根节点,根节点下面可以包含树枝节点和叶子节点,树枝节点下面又可原创 2021-03-27 18:20:45 · 197 阅读 · 0 评论 -
设计模式之——责任链模式
文章目录责任链模式定义应用场景代码讲解扩展中断责任链请求与相应责任链模式定义责任链(Chain of Responsibility) 模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。责任链模式包含了一些命令对象和一些处理对象,每个处理对象决定它能处理那些命令对象,并把自己不能处理的命令对象交下一个处理对象,同时可以在该链中扩展新的处理对象方法。责任链模式也叫原创 2021-03-27 17:21:04 · 328 阅读 · 0 评论 -
设计模式之——装饰器模式(Decorator)
文章目录定义应用场景定义装饰器模式(Decorator Pattern) 允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。应用场景老规矩举个栗子:  原创 2021-03-25 20:49:21 · 173 阅读 · 0 评论 -
设计模式之——外观模式(Facade)和中介者模式(Mediator)
文章目录外观模式(Facade)定义使用场景外观模式(Facade)定义Facade(外观) 模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。它是为子系统中的一组接口所提供的一个一致的界面。使用场景 在开发过程中功能和接口的不断扩展、子系统慢慢变得繁多时,在各个类之间的联系会变得比较复杂。这时候就需要用到Facade模式,创建一个用于对外打交道的“大管原创 2021-03-25 20:14:11 · 879 阅读 · 0 评论 -
设计模式之——工厂模式
文章目录工厂模式定义简单工厂(静态工厂)工厂方法模式抽象工厂模式工厂模式定义 工厂模式的客观定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。简单来说就是实现了创建者和调用者的分离,其核心本质是实例化对象,用工厂方法代替new操作。工厂模式分为三类:简单工厂模式工厂方法模式抽象工厂模式实际上简单原创 2021-03-24 21:31:01 · 162 阅读 · 0 评论 -
设计模式之——单例模式
单例模式(Singleton)定义: 单例(Singleton)模式指一个类只有一个实例,且该类能自行创建这个实例的一种模式。应用场景:只需要一个实例的类 单例模式一共有8中写法,其中只有两种是严格意义上的完美无缺。但实际开发中我们会根据开发需要来使用不同的方法。那么二话不说上代码,分别介绍单例模式的8种实现方式:1. 饿汉式:类加载到内存后,就实例化一个单例。特 &原创 2021-03-22 20:50:20 · 135 阅读 · 0 评论 -
java学习之——设计模式
设计模式设计模式设计模式列表创建型模式结构性模式行为型模式面向对象的六大原则指导思想面向对象的六大原则设计模式 设计模式(Design Pattern) 是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。 199原创 2021-03-20 16:32:09 · 161 阅读 · 0 评论