2016年6月24日
摘要: 抽象工厂模式(abstract factory) 定义 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 UML图 例子 在开发的过程难免会遇到更换数据库的事情,也就意味着会出现大量的代码修改。而使用抽象工厂模式,可以很好的避免修改的行为。现在有两个操作对象,一个是用户,一个是部 阅读全文
posted @ 2016-06-24 21:18 韩思明 阅读(238) 评论(0) 推荐(0) 编辑
2016年6月23日
摘要: 观察者模式(Observer) 定义 定义了一种一堆多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 UML类图 成员角色 抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如Arr 阅读全文
posted @ 2016-06-23 20:58 韩思明 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 建造者模式(builder) 定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 UML图 成员介绍 抽象建造者(Builder)角色:给 出一个抽象接口,以规范产品对象的各个组成成分的建造。一般而言,此接口独立于应用程序的商业逻辑。模式中直接创建产品对象的是具体建造者 阅读全文
posted @ 2016-06-23 20:24 韩思明 阅读(203) 评论(0) 推荐(0) 编辑
2016年6月22日
摘要: 外观模式(Facade) 定义 模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。 UML图 例子 方法A 方法B 方法C 外观模式核心类 客户端 结果 OK,成功 总结 在遇到以下情况使用Facade模式: 1、当你要为一个复杂子系统提供一个简单 阅读全文
posted @ 2016-06-22 20:42 韩思明 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 迪米特法则(Demeter) 定义 一个软件实体尽量少的与其他实体发生相互作用。 原则 不要和“陌生人”说话、只与你的直接朋友通信。 其中直接朋友包含以下几类: (1) 当前对象本身(this); (2) 以参数形式传入到当前对象方法中的对象; (3) 当前对象的成员对象; (4) 如果当前对象的成 阅读全文
posted @ 2016-06-22 20:10 韩思明 阅读(204) 评论(0) 推荐(0) 编辑
2016年6月21日
摘要: 模板方法模式(Template Method) 定义 定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 UML类图 例子 AbstractClass 模板方法1 模板方法2 客户端 结果 OK,成功。 总结 模板方法模式 阅读全文
posted @ 2016-06-21 22:11 韩思明 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 原型模式(Prototype) 定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 UML结构图 浅复制 ProtoType 客户端 结果 问题分析 在基本数据类型(int,double,float...)和String对象时,这种复制是没有什么问题的,因为浅复制只对值进行复制, 阅读全文
posted @ 2016-06-21 21:52 韩思明 阅读(171) 评论(0) 推荐(0) 编辑
2016年6月20日
摘要: 工厂方法模式(Factory Method) 定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类延迟到其子类。 UML类图 组成 1)抽象工厂角色(Creator): 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由 阅读全文
posted @ 2016-06-20 17:58 韩思明 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 代理模式(Proxy) 定义 为其他对象提供一种代理以控制对这个对象的访问。 UML结构图 例子 一个人希望去追求一个女生,但是不好意思直接送礼物给女生,所以就只有找一个女生的朋友,代表他去送礼物,和女生直接接触的并不是该追求者,而是中间的代理对象。 女生 追求者 代替送礼物的人 客户端 OK,代理 阅读全文
posted @ 2016-06-20 16:59 韩思明 阅读(214) 评论(0) 推荐(0) 编辑
2016年6月19日
摘要: 标记清除法 原理 标记清除算法是现在垃圾回收算法的基本思想。大概分为两个阶段:标记阶段和清除阶段。在标记阶段,首先通过根节点,标记所有从根节点开始的可达对象。因此,未被标记的对象就是未被引用的垃圾对象。在清除阶段,清除所有未被标记的对象。 从图上可以看到,不可达的垃圾对象被清除了,而从根节点可以到达 阅读全文
posted @ 2016-06-19 16:14 韩思明 阅读(1068) 评论(0) 推荐(1) 编辑