08 2020 档案
摘要:迭代函数模式(Iterator)又叫游标模式(Cursor),是对象的行为模式。 迭代函数模式可以顺序的访问一个聚集中的元素而不必暴露聚集的内部表象。 当这里提到聚集时,是泛指包括Java聚集在内的一般性对象集合。 而当提到Java聚集时,则专指实现了 java.util.Collection接口的
阅读全文
摘要:观察者模式是对象的行为模式,又叫做发布-订阅模式(Publicsh/Subscribe)、模型-视图模式(Model/View)、源-监听器模式(Source/Listener)或从属者模式(Dependent)。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个
阅读全文
摘要:模板方法模式是类的行为模式。 准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现, 然后声明一些抽象方法迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法, 从而对剩余的逻辑有不同的实现。这就是模板方法的用意。 模板方法模式的结构 这里涉及两个角色: 抽象模板角色(Abs
阅读全文
摘要:策略模式属于对象的行为模式。 其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。 策略模式使得算法可以在不影响到客户端的情况下发生变化。 策略模式相当于可插入式的算法。 当准备在一个系统里使用策略模式时,首先必须找到需要包装的算法,看看算法是否可以从环境中分
阅读全文
摘要:一个对象的状态在对象被创建之后就不再变化,就是所谓的不变模式(Immutable Pattern). 不变模式缺少改变自身状态的行为,因此它是关于行为的。 不变模式只涉及到一个类。 一个类的内部状态创建后,在整个生命期间都不会发生变化时,这样的类称为不变类。 不变模式有两种形式: 弱不变模式 强不变
阅读全文
摘要:行为模式(Behavioral Pattern)是对不同的对象之间划分责任和算法的抽象化。 行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。 行为模式分为类的行为模式和对象的行为模式: 类的行为模式: 类的行为模式使用继承关系在几个类之间分配行为。 对象的行为模式:对象的行为模式则使
阅读全文
摘要:桥梁模式的用意是:将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立的变化。 抽象化 存在于多个实体中的共同的概念性联系,就是抽象化。通常情况下,一组对象如果具有相同的概念性联系,那么它们就可以通过一个共同的类来描述。 实现化 抽象化给出的具体实现,就是
阅读全文
摘要:门面模式是对象的结构模式。 外部与一个子系统的通信必须通过一个统一的门面对象进行,这就是门面模式。 什么是门面模式 门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面对象进行。 门面模式提供一个高层次的接口,使得子系统更易于使用。 门面模式的结构 在这个对象图中,出现了两个角色: 门面
阅读全文
摘要:享元模式是对象的结构模式。 享元模式以共享的方式高效的支持大量的细粒度对象。 享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External)。 一个内蕴状态是存储在享元对象内部的,并且是不会随环境改变而有所不同的。因此,一个享元可以具有内蕴状态并可以共享。 一个
阅读全文
摘要:代理模式是对象的结构模式。 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 代理模式的英文叫做Proxy或 Surrogate,中文都可翻译为 代理。 所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。 在一些情况下,一个客户不想或者不能直接引用一个对象,而
阅读全文
摘要:装饰模式(Decorator)又名包装模式(Wrapper)。 装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式以对客户端透明的方式动态的给一个对象附加上更多的责任。 装饰模式的结构 模式的类图 角色如下: 抽象构件角色(Component): 给出一个抽象接口,以规
阅读全文
摘要:合成模型模式(Composite)属于队形的结构模式,有时又叫做部分-整体模式(Part-Whole)。 合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。 合成模式可以使客户端将单纯元素与复合元素同等看待。 树 有向树结构的种类: 从上向下 从下向上 双向的 这里仅给出由上向下的示意图
阅读全文
摘要:缺省适配模式为一个接口提供缺省实现,这样类型可以从这个缺省实现进行扩展,而不必从原有接口进行扩展。 作为适配模式的一个特例,缺省适配模式在java中有着特殊的应用。 模式的结构 缺省适配模式是一种平庸化的适配器模式。 源码如下:、 需要缺省适配的AbstractService类的源代码 packag
阅读全文
摘要:适配器模式(Adapter Pattern)把一个类的接口变换成客户端期待的另一种接口,从而是原本因接口不匹配而无法一起工作的两个类能够一起工作。 适配器模式有两种不同形式 类的适配器模式 对象的适配器模式 类的适配器模式结构 类的适配器模式把被适配的类的API转换成目标类的API, 其静态结构如下
阅读全文
摘要:这里给出一个原始模型模式的例子。孙大圣的身外身法术 浅复制 设计图如下: TheGreatestSage类扮演客户角色。 TheGreatestSage类 package com.vincent.prototype; public class TheGreatestSage { private Mo
阅读全文
摘要:原始模型(Prototype)模式属于对象的创建模式。 通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是原始模型模式的用意。 Java对象的复制 Java的所有类都是从 java.lang.Object 类继承而来的,而 Object 类提供
阅读全文
摘要:建造模式是对象的创建模式。 建造模式可以将一个产品的内部表象和产品的生成过程分割开来, 从而可以使一个建造过程生成具有不同的内部表象的产品对象。 不同的产品可以有不同的内部表象,也就是有不同的零件。 对象性质的建造 有些情况条,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整
阅读全文
摘要:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 单例模式有以下的特点: 单例类只能有一个实例 单例类必须自己创建自己的唯一的实例 单例类必须给所有其他对象提供这一实例 饿汉式单例类 public class EagerSingleton { privat
阅读全文
摘要:什么是死锁 死锁是多线程中的一种概念,在单线程中时不 存在死锁的。死锁指的是多个线程之间无限等待资源的过程。 例如,A,B线程在运行时都会分别用到资源1和资源2,但是A线程锁定了资源1,同时请求资源2,而B线程则在锁定了资源2的情况下不断请求资源1, 从而造成无限请求资源又都不释放各自资源的无限过程
阅读全文
摘要:对于c#中的async和await的使用,没想到我一直竟然都有一个错误。。 。。还是总结太少,这里记录下。 这里以做早餐为例 流程如下: 倒一杯咖啡。 加热平底锅,然后煎两个鸡蛋。 煎三片培根。 烤两片面包。 在烤面包上加黄油和果酱。 倒一杯橙汁。 当使用同步方式实现时,代码是这样的: using
阅读全文