简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 定义解释的文字很单调 ...
分类:
其他好文 时间:
2016-11-10 01:49:49
阅读次数:
163
动机(Motivation) 在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。 如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期实现需求? 意图(Intent ...
分类:
其他好文 时间:
2016-11-09 22:34:43
阅读次数:
186
GOF根据模式的目标将模式分为三个类目:创建型、行为型和结构型。 1 创建型模式 创建型模式设计对象的实例化,这类模式的特点是,不让用户依赖于对象的创建或排列方式,避免用户直接使用new运算符创建对象。 GOF的23中模式中的下列5种模式属于创建型模式: (1)工厂方法模式:定义一个用于创建对象的接 ...
分类:
其他好文 时间:
2016-11-09 19:36:39
阅读次数:
191
面向对象的代价: 面向对象很好的解决了系统抽象问题,同时在大多数情况下,也不会损及系统的性能。但是,在某些特殊的应用中,由于对象的数量太大,采用面向对象会给系统带来难以承受的内存开销。比如图形应用中的图元等对象、字处理应用中的字符对象等。 动机(Motivation) 采用纯粹对象方案的问题在于大量 ...
分类:
其他好文 时间:
2016-11-08 14:14:30
阅读次数:
180
直接与间接 人们对于复杂的软件系统通常由一种处理手法,即增加一层间接层,从而对系统获得一种更为灵活、满足特定需求的解决方案。 动机(Motivation) 在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等),直接访问会给使用者、或者系统 ...
分类:
其他好文 时间:
2016-11-08 14:10:38
阅读次数:
196
系统的复杂度: 假设我们需要开发一个坦克模拟系统用于坦克车的各种作战环境中的行为,其中坦克引擎、控制器、车轮、车身等子系统构成。 方案: 动机(Motivation) 上述A方案的问题在于组件的客户和组件中各种复杂的子系统有了过多地耦合,随着外部客户程序和各子系统的演化,这种过多地耦合面临很多变化的 ...
分类:
其他好文 时间:
2016-11-08 14:10:20
阅读次数:
238
动机(Motivation) 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是环境要求的接口是这些现存对象不满足的。 如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口? 意图(Intent) 将一个类的接口转换成客 ...
分类:
其他好文 时间:
2016-11-06 22:26:43
阅读次数:
272
1 什么是设计模式 设计模式是对在软件设计过程中重复出现的问题提出了一种比较好的解决方案。正如一位专家所说:设计模式是对程序设计人员经常遇到的设计问题的可再现的解决方案(The Smalltalk Companion)。GOF设计模式通常被认为是其他设计模式的基础,随着业务复杂度的增大,会不断涌现新 ...
分类:
Web程序 时间:
2016-11-06 20:11:17
阅读次数:
252
依赖关系的倒置 抽象不应该依赖与实现细节,实现细节应该依赖与抽象。 -抽象A直接依赖与实现细节b -抽象A依赖与抽象B,实现细节b依赖与抽象B 动机(Motivation) 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定 ...
分类:
其他好文 时间:
2016-11-06 17:37:28
阅读次数:
340
动机(Motivation) 在系统中,经常面临着“某个对象”的创建工作;由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。 如何应对这种变化?如何提供一种“封装机制”来隔离出“这个易变对象”的变化,从而保持系统中“其他依赖该对象的对象”不随着需求改变而改变? 意图 ...
分类:
其他好文 时间:
2016-11-06 11:28:39
阅读次数:
192