随笔分类 -  设计模式

学习设计模式中的一些心得和体会
摘要:概述单例模式可以说是大伙儿最熟悉的模式之一了。说简单是最简单的一种模式,但是深究复杂起来也可以是最复杂的模式。单例模式和其他的创建型模式不同,其他的创建型模式关心的问题是如何创建对象,获得所谓的产品;而单例模式却是关心对象创建的次数以及何时创建。单例模式的优点使用等等GOF都简单的说明了,这里就不说了。目的希望对象只创建一个实例,并且提供一个全局的访问点。分析我们试想几个场景,慢慢来深入单例模式。场景一:假设有一艘海盗船,船员会有很多个,而船长只有一名。我们下意识的就会给出下面的代码: 1: /** 2: * 单例模式 3: * @author zhusw 4: * @... 阅读全文
posted @ 2012-07-23 09:33 朱样年华 阅读(1459) 评论(2) 推荐(0) 编辑
摘要:GOF关于工厂方法的概念1.1意图定义一个用于创建对象的接口,让子类来决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。1.2 别名虚构造器(Virtual Constructor)1.3 实用性在同时满足下列情况下可以使用Factory Method模式:当一个类不知道他所必须创建的类的对象的时候;当一个类希望由它的子类来指定他所创建的对象的时候;当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。(后半句看不太明白,查了下原文,我个人理解的意思是“创建对象时,我们不必关心具体是由哪个子类来创建的”)1.4 结 阅读全文
posted @ 2012-07-05 14:55 朱样年华 阅读(1399) 评论(3) 推荐(1) 编辑
摘要:这次来学习另一个创建型设计模式:Builder生成器模式。GOF对Builder模式的定义(1)意图将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。(2)适用性1. 当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式;2. 当构造过程必须允许构造的对象有不同的表示;(3)结构(4)参与者 Builder:为创建一个Product对象的各个部件指定抽象接口 ConcreteBuilder:1. 实现Builder的接口以构造和装配该产品的各个部件 2. 定义并明确它所创建的表示 3. 提供一个检索产品的接口 Director:构造一个使用... 阅读全文
posted @ 2012-05-25 14:53 朱样年华 阅读(1438) 评论(1) 推荐(4) 编辑
摘要:1.概念 抽象工厂模式,顾名思义,所谓工厂即是批量制造产品的地方。在Java中,抽象工厂模式用来创建对象。根据GOF对模式的分类,抽象工厂模式属于创建型对象模式。 先来说一些概念,《设计模式》中对抽象工厂模式的定义如下:提供一个创建一系列相关或相互依赖对象的接口,而无需制定它们具体的类。 为了更好的描述抽象工厂,吸取前人对抽象工厂的理解,这里引入一个新的概念帮助理解抽象工厂:产品族。所谓产品族,是指位于不同产品等级结构,功能相关联的产品组成的家族。 举个例子来帮助理解,汽车按类型可分为:轿车、客车、货车。汽车按品牌可分为:奔驰、宝马、大众。(先不管奔驰宝马有没有货车,just an... 阅读全文
posted @ 2012-03-26 16:07 朱样年华 阅读(1611) 评论(2) 推荐(3) 编辑
摘要:什么是设计模式? 引用GOF的《设计模式》一书的两句话:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样你就能一次又一次的使用该方案而不必重复劳动。 设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。 由此看来设计模式其实就是帮助我们针对某个特定场景下的问题,提出一套通用的可重复使用的方案来解决这个问题。 设计模式有四个基本要素: 1 模式名称(pattern name):模式名称就是一个模式的名字,如何用简短的词汇来表达一个模式的特征是很重要的; 2 问题(problem):描述了应当在何时使用模式,也就是该模式通常可以解... 阅读全文
posted @ 2012-03-21 16:35 朱样年华 阅读(1045) 评论(0) 推荐(1) 编辑