Skip to main content

moregeek program

设计模式之访问者模式_程序员田同学的博客-多极客编程

大多数情况下你不需要访问者模式,但当一旦需要访问者模式时,那就是真的需要它了,这是设计模式创始人的原话。可以看出应用场景比较少,但需要它的时候是不可或缺的,这篇文章就开始学习最后一个设计模式——访问者模式。 一、概念理解 访问者模式概念:封装作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 通俗的解释就是,系统中有一些固定结构的对象(元素),在其内

Read More

设计模式之模板方法模式_程序员田同学的博客-多极客编程

在我们实际开发中,如果一个方法极其复杂时,如果我们将所有的逻辑写在一个方法中,那维护起来就很困难,要替换某些步骤时都要重新写,这样代码的扩展性就很差,当遇到这种情况就要考虑今天的主角——模板方法模式。 一、概念理解 模板方法模式的概念很简单,在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 既然概念叫“骨架”,那想当

Read More

行为型设计模式之中介者模式_积跬步,至千里。的博客-多极客编程

中介者模式 中介者模式又称为调解者模式或调停者模式,属于行为型模式。它用一个中介对象封装系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使它们可以松散耦合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。其

Read More

行为型设计模式之观察者模式_积跬步,至千里。的博客-多极客编程

观察者模式 观察者模式,又叫发布-订阅模式,它属于行为型模式。它是定义一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听,使得每当主题对象状态变化时,所有依赖于它的对象都会得到通知并被自动更新。 观察者模式的核心是将观察者与被观察者解耦,以类似于消息/广播发送的机制联动两者,使被观察者的变动能通知到感兴趣的观察者们,从而做出相应的响应。 应用场景 1.当一个抽象模型包含两个方面

Read More

设计模式之策略模式_程序员田同学的博客-多极客编程

在一个收银系统中,如果普通用户、中级会员、高级会员分别对应着不同的优惠策略,常规编程就要使用一系列的判断语句,判断用户类型,这种情况下就可以使用策略模式。 一、概念理解 策略模式的概念很好理解,它将对象和行为分开,将行为定义为 一个行为接口和具体行为的实现,每个if判断都可以理解为一个策略。 如果在收银系统中使用策略模式,要将普通、中级、高级会员分别定义一个具体策略类,并实现各自的方法,定义一个环

Read More

行为型设计模式之备忘录模式_积跬步,至千里。的博客-多极客编程

备忘录模式 备忘录模式又称为快照模式或令牌模式,属于行为型模式。 它是指在不破坏封装的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。简而言之:允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 它提供一种类似“后悔药”的机制,通过存储系统各个历史状态的快照,使得可以在任一时刻将系统回滚到某一个历史状态。 应用场景 1.需要

Read More

设计模式之状态模式_程序员田同学的博客-多极客编程

实际开发中订单往往都包含着订单状态,用户每进行一次操作都要切换对应的状态,而每次切换判断当前的状态是必须的,就不可避免的引入一系列判断语句,为了让代码更加清晰直观,我们引入今天的主角——状态模式。 一、概念理解 假设订单状态有,下单、发货、确认收货,如果用户确认收货,在常规编程中就要判断当前用户的状态,然后再修改状态,如果这种情况下使用状态模式。 将各个状态都抽象成一个状态类,比如下单状态类、发货

Read More

编码中的adapter,不仅是一种设计模式,更是一种架构理念与解决方案_架构悟道的博客-多极客编程

大家好,又见面了。 不知道下面这玩意大家有没有见过或者使用过?这是一个插座转换器。我们都知道日常使用的是220v的交流电,而国外不同国家使用的电流电压是不一样的(比如日本使用的是110v)、且插座的接口样式也是各不相同的(比如欧洲国家使用的是两个小圆柱状的插头接口),如果我们到别的国家去旅行的时候,借助这个插座转换器,就可以让我们的手机充电器在国外也能正常使用了。 当然,除了使用插座转换器,还有

Read More

行为型设计模式之状态模式_积跬步,至千里。的博客-多极客编程

状态模式 状态模式(State Pattern)属于行为型模式。它是允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。 状态模式中类的行为是由状态决定的,不同的状态下有不同的行为。其意图是让一个对象在其内部改变的时候,其行为也随之改变。状态模式核心是状态与行为绑定,不同的状态对应不同的行为。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。通过把状

Read More

行为型设计模式之迭代器模式_积跬步,至千里。的博客-多极客编程

迭代器模式 迭代器模式又称为游标模式,属于行为型模式。它提供一种顺序访问集合容器中的各个对象元素的方法,而又无须暴露集合容器的内部表示。 迭代器模式可以为不同的容器提供一致的遍历行为,而不用关心容器内容元素组成结构。 迭代器模式的本质是抽离集合对象迭代行为到迭代器中,提供一致访问接口。也就是说将集合的遍历行为抽取为单独的迭代器对象。 应用场景 1、访问一个集合对象的内容而无需暴露它的内

Read More

行为型设计模式之责任链模式_积跬步,至千里。的博客-多极客编程

责任链模式 责任链模式(Chain of Responsibility Pattern)属于行为型模式。 它是将链中每一个节点看作是一个对象,每个节点处理的请求均不同,且内部自动维护一个下一节点对象。当一个请求从链式的首端发出时,会沿着链的路径依次传递给每一个节点对象,直至有对象处理这个请求为止。 应用场景 责任链模式主要是解耦请求与处理,客户只需将请求发送到链上即可,无需关心请求的具

Read More

设计模式之观察者模式_程序员田同学的博客-多极客编程

观察者模式是极其重要的一个设计模式,也是我几年开发过程中使用最多的设计模式,本文首先概述观察者模式的基本概念和Demo实现,接着是观察者模式在Java和Spring中的应用,最后是对观察者模式的应用场景和优缺点进行总结。 一、概念理解 观察者模式:定义对象之间的一种一对多的依赖关系,使得每当一个对象的状态发生变化时,其相关的依赖对象都可以得到通知并被自动更新。主要用于多个不同的对象对一个对象的某个

Read More

常用的设计模式简介_浅羽技术的博客-多极客编程

1.请列举出在 JDK 中几个常用的设计模式? 单例模式(Singleton pattern)用于 Runtime,Calendar 和其他的一些类中。工厂模式 (Factory pattern)被用于各种不可变的类如 Boolean,像 Boolean.valueOf,观察者模式 (Observer pattern)被用于 Swing 和很多的事件监听中。装饰器设计模式(Decorator de

Read More

设计模式之备忘录模式_程序员田同学的博客-多极客编程

无论是我们在使用word还是记事本,系统都会为我们提供撤销的功能,这几乎是人人都会使用到的功能,而在我们实际开发中,会不会存在一个很复杂的对象,当更改了其中的某一个属性以后,也提供撤销的功能,可以快速恢复到更新前的状态。提供该功能的模式也正是今天的主题——备忘录模式。 一、概念理解 书上备忘录的解释是,在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢

Read More

行为型设计模式之策略模式_积跬步,至千里。的博客-多极客编程

策略模式 策略模式也叫政策模式,属于行为型模式。 它是将定义的一系列算法、分别封装起来,让它们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户。 策略模式能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。 应用场景 1、针对同一类型问题,有多种处理方式,每一种都能独立解决问题。 2、算法需要自由切换的场景。 3、需要屏蔽算法规则的场景。

Read More

设计模式之中介者模式_程序员田同学的博客-多极客编程

在我们实际业务中,可能存在多个类之间相互调用,形成了一个复杂的网状结构。这时候就需要有一种模式去“捋顺”他们之间的关系,引出一个中间者让类之间不再相互调用,该模式就是我们今天的主人公——中介者模式。 一、概念理解 我们先看中介者模式的官方概念:用一个中介者对象来封装一系列的对象交互,中介者使各对象不需要显示地相互引用,从而使其松散耦合,而且可以独立地改变它们之间的交互。 大白话解释就是,引入一个“

Read More

设计模式之迭代器模式_程序员田同学的博客-多极客编程

本文介绍设计模式中的迭代器模式,首先通俗的解释迭代器模式的基本概念和对应的四个角色,并根据四个角色举一个典型的实例,为了加强知识的连贯性,我们以Jdk源码集合中使用迭代器模式的应用进一步说明,最后说明迭代器模式的应用场景和优缺点。 读者可以拉取完整代码本地学习,实现代码均测试通过上传到码云 一、概念理解 迭代器模式官方解释就是提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示

Read More

作为一名java程序员的必修课_wx630f055ce23fc的博客-多极客编程

java基础 设计模式 spring框架(方向) 开源框架(如fescar)的代码构建的方式 并发、网络编程 JVM 常用数据结构 分布式系统设计、SOA、消息队列、缓存 linux的应用 中间件 上面的知识结构图,是基于对目前java程序员会涉及到的内容以及目前招聘时候的技术要求,另外结合自身对java程序员的一些认知而写出来的 其中java基础是最基本的要求,最起码要对java的对象、语

Read More

创建型设计模式之建造者模式_积跬步,至千里。的博客-多极客编程

@TOC 建造者模式 概述 建造者模式(Builder Pattern)属于创建型模式。它是将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 简而言之:建造者模式就是使用多个简单的对象一步一步构建成一个复杂的对象。 建造者模式适用于创建对象需要很多步骤,但是步骤的顺序不一定固定。如果一个对象有非常复杂的内部结构(很多属性),可以将复杂对象的创建和使用进行分离。 JDK的St

Read More

设计模式之命令模式_程序员田同学的博客-多极客编程

本文通过解决老王经常搞错借书人的问题,来引出行为型模式中的命令模式。为了在案例之上理解的更加透彻,我们需要了解命令模式在源码中的应用。最后指出命令模式的应用场景和优缺点。 读者可以拉取完整代码到本地进行学习,实现代码均测试通过后上传到码云。 一、引出问题 老王的书房藏书越来越多,每天来借书的人络绎不绝。每天有人借书、还书、老王将A借的书算到B头上的乌龙事件频出。老王和小王就商量着手解决这个问题。

Read More