- 博客(12)
- 资源 (24)
- 收藏
- 关注
原创 Aha!设计模式(15)-BUILDER(6)
效果 2) 它将构造代码和表示代码分开。 Builder模式将构建对象的代码和表现(表达)对象的代码隔离开。这里的构建偏向于抽象的指示部分,表现(表达)则偏向实际的输出。例如我们说装一扇门,对于建筑模型来讲,可能就是在模型上粘一个小木板;对于现场工人来讲,可能真的就是安装一个防盗门。这里装一扇门就是抽象的指示,而粘小木板或者安装防盗门则是具象表现(表达)的部分。 Build...
2018-11-28 20:13:32 290
原创 Aha!设计模式(14)-BUILDER(5)
效果 这里是Builder模式的主要效果: 1 ) 它使你可以改变一个产品的内部表示。 首先明确两个词。一是前面已经提到过《设计模式》书中将representation翻译成表示,作者认为应该译为表现;二是关于内部的理解。当我们用不同的方式盖两座大楼时,它们的内部当然不同,但是大多数情况下外部也会不同。所以作者认为,《设计模式》这部分内容中提到的内部,应该指的是隐藏在构建接口后面的...
2018-11-27 20:01:13 282
原创 Aha!设计模式(13)-BUILDER(4)
参与者 Builder(TextConverter) — 为创建一个Product对象的各个部件指定抽象接口。 •ConcreteBuilder(ASCIIConverter,TeXConverter,TextWidgetConverter) — 实现Builder的接口以构造和装配该产品的各个部件。 — 定义并明确它所创建的表示。 — 提供一个检索产品的接口(例如, GetASCIITe...
2018-11-26 20:21:11 267
原创 Aha!设计模式(12)-BUILDER(3)
适用性 在以下情况使用Builder模式 • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 • 当构造过程必须允许被构造的对象有不同的表示时。 一般来讲,创造一个复杂对象的处理总是可以拆分成算法(或步骤)的部分和实际生成构件的部分。无论我们希望独立算法还是替换表现,所做的都是一件事,把算法和生成构件拆分开,这就是Builder模式。 简单说就是,想变...
2018-11-21 20:43:42 324
原创 Aha!设计模式(11)-BUILDER(2)
动机 《设计模式》中关于BUILDER动机的说明使用的是RTF文档格式转换的例子。这个例子本身很容易理解,这里就不再重复了。本文只讲作者本人的见解。 还是那一招 本连载提到过:大部分情况下,设计模式也好,面向对象也好其实就是一招,多态。这个结论对于BUILDER模式同样使用。具体到《设计模式》中的例子,希望变化的就是输出的类型或者说格式。基于这个想法,即使我们没有学习设计模式,也可以进...
2018-11-20 19:39:14 268
原创 Aha!设计模式(10)-BUILDER(1)
本来抽象工厂模式还有已知应用和相关模式两个模块,但是它们对于理解设计模式没有什么意义,本系列连载会直接省略。 名称 还是先看名称。这个设计模式的英文为BUILDER,中文翻译成了“生成器”,作者认为这个翻译不太好,如果翻译成【构建者】,或者【建造者】没准会更好。【生成器】的说法无法给人构建对象很大,很复杂的感觉。例如大楼,轮船等。还是英文的BUILDER最好。 意图 将一个复杂...
2018-11-19 19:59:01 283
原创 Aha!设计模式(9)-抽象工厂(8)
代码示例 《设计模式》一书中关于代码示例的说明非常详细,这里不再重复原书中的内容。希望大家自己去读一遍原著,然后再来阅读本文的内容。 基本上每个设计模式的代码示例都会讲一个故事,但是故事并不是设计模式的重点,它只是希望大家相信真的存在需要这个模式的场景。重要的还是类关系和代码。 利用者代码: 这段代码中创建了一个Maze对象,两个Room对象和六个Wall对象,...
2018-11-14 20:27:39 275
原创 Aha!设计模式(8)-抽象工厂(7)
实 现(续) 2) 创建产品 AbstractFactory仅声明一个创建产品的接口 ,真正创建产品是由 ConcreteProduct子类实现的。最通常的一个办法是为每一个产品定义一个工厂方法(参见Factory Method(3 . 3))。一个具体的工厂将为每个产品重定义该工厂方法以指定产品。虽然这样的实现很简单,但它却要求每个产品系列都要有一个新的具体工厂子类,即使这些产品系列的差...
2018-11-13 19:49:01 379
原创 Aha!设计模式(7)-抽象工厂(6)
实 现 下面是实现Abstract Factor模式的一些有用技术: 1) 将工厂作为单件 一个应用中一般每个产品系列只需一个ConcreteFactory的实例。因此工厂通常最好实现为一个Singleton(3.5)。 只有一句话,但是并没有给出实现。为了说明这个问题,作者按照自己的理解,以前面提到的操作系统主题的例子为背景提供一个实现。 类图: 有关Singlet...
2018-11-12 18:29:26 274
原创 Aha!设计模式(6)-抽象工厂(5)
协作 • 通常在运行时刻创建(唯一的)一个ConcreteFactory类的实例。这一具体的工厂创建具有特定实现的产品对象。为创建不同的产品对象,客户应使用不同的具体工厂。 原书的翻译有一点问题,根据以下的英文原文,作者在这里加上了一个修饰词“唯一的”,这样更准确。另外这里所谓不同的产品对象应该是另外一组产品对象的意思。 Normally a single instance of...
2018-11-07 20:33:24 281
原创 Aha!设计模式(5)-抽象工厂(4)
结构 下图为抽象工厂模式的类图。 这个类图和前面出现过的类图唯一的区别就是使用了更加抽象的类名。所以就不在重复说明了。 这里说说另一个话题:画类图。抽象工厂模式的类图可以按照以下步骤(当然不是绝对的)画出: 首先可以个画出三个工厂类。 为每个工厂类添加两个产生产品的操作/方法。 画出两个产品系列的继承结构。 添加客户类。 添加依赖...
2018-11-06 20:40:55 279
原创 Aha!设计模式(4)-抽象工厂(3)
适用性 在以下情况可以使用Abstract Factory模式 • 一个系统要独立于它的产品的创建、组合和表示时。 对于一个一定规模以上的软件,经常会出现需要多个功能组件协同工作的情况。为了降低耦合性,增强扩展性,经常要对系统进行分解。这时将功能组件的创建,组合(协同动作)和表示分离是一种常用的方式。而功能组件的创建部分就可以使用抽象工程模式。 • 一个系统要由多个产品系...
2018-11-05 20:55:27 323
Aduino UNO D1 R32 硬件包
2020-03-15
[Android应用开发记录-字幕播放器(5)完善]附属工程,源码
2011-09-07
Android应用开发记录-字幕播放器(5)完善附带工程,源码
2011-09-07
LyricPlayer for Android 2.1
2011-09-03
Android应用开发记录-字幕播放器(4)完成
2011-08-28
Android下的原创小游戏-九宫格
2011-08-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人