前言本篇来谈谈备忘录模式。
正文概念备忘录模式保存对象的某个状态,以便当需要时恢复这个状态,它属于行为型模式。它又称快照模式或token模式。它的意图是在不破坏封装的条件下,将对象的状态保存下来,并存储,并且可以在未来的某个时刻恢复。这个模式涉及三个角色:
备忘录(Memento):将发起人对象的内部状态存储起来,并且可以保护不被...
前言本篇来谈谈状态模式。
正文概念状态模式属于行为型模式,在这个模式中类的行为是根据类的状态发生改变的。在类中维护一个状态变量,当其改变时类的行为就发生改变,看上去就跟改变了类本身一样。那状态模式涉及的角色有:
环境(context):上下文,通常定义客户端可用的接口,内部维护一个状态实例,根据这个状态做出不一样的行为。
抽象...
前言接下来讲讲解释器模式。
正文概念解释器模式属于行为型模式。它实现了一个表达式的接口,用于解释上下文。比如正则表达式解析,SQL解析等等。这种模式应用上较少,那在框架上用的还是比较多的,比如上文提到了正则表达式,还有XML解析,SQL解析等等都有着应用。
实现那我们就用一个简单的例子来实现这个模式。先来讲讲解释器模式中的几个角...
前言本文来谈谈责任链模式。
正文概念责任链模式属于行为型模式。正如名字所说一样,对象是一个链式的结构,当请求到达对象时,如果第一个对象不能处理这个请求,则将请求传递给下一个对象,以此类推。责任链可以是直线型,也可以是环形,又或者是树形。那这种设计模式简化了请求传递的复杂度,请求只要传递给责任链上,并且无需关心如何处理请求,所以责任链...
前言桥接模式其实是很少在项目中使用的设计模式,难度可以说是很大的。但是理解桥接模式能更深入的理解面向对象编程。那这篇就来讲讲这个模式。
正文概念我们先来看看维基百科上的定义:
桥接模式是软件设计模式中最复杂的模式之一,它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。
听起来就很复杂,而且竟然说是...
前言这篇来讲讲原型模式。
正文概念原型模式属于创建型模式,通常被用来创建重复的对象,通过原型来克隆对象,来获取相同的对象。一般来说是创建对象的代价比较大时,比如对象的属性,设置较多,不方便重新创建,而是从原有对象进行拷贝。这个模式实现的关键就是clone方法。原型模式在实际项目中很少单独出现,通常是与工厂模式一起出现,由clone方...
前言lambda表达式不能说常用吧,但偶尔还是需要用到的。关于lambda表达式,是我学python的时候接触到的概念,仔细想想也有两年了。前段时间的面试有提到java中的lambda表达式,当时自己的回答还是比较笼统的,比如作为类似语法糖的存在,通常在比较器里面写,可以免写匿名类等等。我个人感觉回答的不是很好,那这篇文章就来讲讲我...
前言本篇来讲讲迭代器模式。
正文概念迭代器模式属于行为型模式,这种模式用于顺序访问集合对象中的元素,但是没有暴露内部的表示。例如java中的iterator。一般来讲迭代器模式中有以下几个角色:
迭代器(Iterator):抽象接口,一般来说有几个方法,next()取得下一个元素,hasNext()判断是否有下一个元素,remov...
前言几天没写文章,今天来讲讲策略模式。
正文概念策略模式,属于行为型模式。它是把算法封装到类中,让这些算法可以相互替换,并且不影响到客户端,简单来说,就是把算法进行封装,客户端可以通过条件不同来选择不同的策略。常见的实例有:
客户端需要选择几种算法中的一种,例如某些工具类的封装
选择不同实现的方式,例如实现出行可以步行可以公交等等...
前言好久没写这个系列,趁着休息时间今天来讲讲适配器模式。
正文概念适配器模式属于结构型模式,这种设计模式解决的问题是原本由于接口不兼容而不能工作的类可以在一起工作。适配器模式与装饰模式很像,是定义一个包装类,来包装我们所需要适配的类,改变它的接口。但和装饰模式不同的是,包装类不改变原有类的功能,只是改变它的接口。那运用的场景有: ...