09 2012 档案
摘要:前言 回顾上一篇对适配器模式的介绍,其主要用于对现有对象的接口的适配封装,使其符合复用环境的接口要求,同时相对于类适配器来说,在java语言层面更适合使用对象组合的方式来实现适配器模式(主要是因为java或者.net语言不支持多继承机制),降低系统的耦合度,增加代码的灵活性和可维护性。其实,Favor Composition Over Inheritance原则在多个结构型模式中都有很明显的体...
阅读全文
摘要:前言 从今天开始,我们继续设计模式系列学习之旅,完成了对创建型模式的介绍和学习,接下来,我们将着重介绍各种结构型模式,希望大家能一起参与进来,学习、交流和思考。结构型模式涉及如何组合类和对象以获得更大的结构,同时,在各种结构型模式的实现上基本上遵循优先使用对象组合,而不是类继承原则,因为在运行时刻改变对象组合关系,可以使对象组合方式更具灵活性,这种机制用静态类组合(继承方式)是不可能实现的,这点...
阅读全文
摘要:前言 到今天为止,我们已经把GOF设计模式中的创建型模式都介绍完毕呢,总结起来就是:工厂方法模式、抽象工厂模式、生成器模式、原型模式及单例模式。通过前面的介绍,希望能让大家对创建型模式有一个新的认识和理解,讲解有什么不恰当的地方还希望大家提出来,一起交流和进步。总之一句话,之所以要写该系列文章,除了加深自己对23种设计模式的认识和理解外,也是将把自己对其的”掌握“诉诸博客,希望能得到各位的认同和...
阅读全文
摘要:前言 单例模式是我们所要介绍的创建型模式中的最后一种设计模式,它与我们前面介绍过的四种创建型模式有相似之处,亦有很大的不同之处。相似之处是它们都属于创建型模式,抽象了对象类实例化的过程;而不同之处是在于单例模式在创建对象实例时,在全局范围内保证只会创建存在该对象类的一个实例对象,同时提供其全局访问点,而其他的四个创建型模式并没有此限制,可以自由地创建实例化多个对象类实例,这是它们之间的最大区别。...
阅读全文
摘要:前言 在前面介绍的三种创建型模式中,有一个共通的特点,就是不管是直接创建还是分步骤地组装创建都是通过第三方对象来完成,比如工厂、生成器。但是在创建型模式中还有一个比较特殊的模式,其不用通过第三方对象来完成对对象的创建,而是通过克隆自己来创建新对象,完成对新的对象的创建工作。这样客户端便可以直接根据原型对象来动态获取新的对象,而无需借助其他的辅助类来生成新的对象呢。类似这样的一种创建型模式,名曰—...
阅读全文
摘要:前言 在前两讲,我们介绍了工厂方法和抽象工厂模式,这两种模式都是完成对一个或者若干个内部结构相对简单的对象的创建工作。换句话来说,这样的对象内部之间没有明显的子部分或者说是各个子部分间的“组装”过程。然而在现实世界里,确实存在着这样的对象模型,可以将内部抽象成若干个子部分,而且需要通过一定的组建算法将它们构建在一起形成完整的最终对象。面对类似对象的创建工作,显然工厂模式已经不善长,需要追寻新的模...
阅读全文
摘要:前言 在上一篇介绍的工厂方法模式,主要用于创建单个对象,但是如果需要在一个工厂方法中创建一系列相关或者相互依赖的对象时,我们是又该如何应对呢?如果完全按照工厂方法模式来设计,那么在设计的过程中,我们必然会面对越来越多的工厂类,但是由于这些对象彼此间存在一定的关联依赖性,我们或许可以通过机制将这一系列对象的创建工作统一封装起来?这就是即将登场的——抽象工厂方法模式擅长之处呢! 动机 在软件系统...
阅读全文
摘要:前言 创建型模式抽象了实例化过程。它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化托给另一个对象。随着系统演化得越来越依赖于对象复合而不是类继承时,创建型模式变得更为重要。接下来,我们马上进入对第一个创建型模式的介绍——工厂方法模式。 动机 软件系统中,经常面临着“某个对象”的创建问题。由于用户需求的改变,该对象的...
阅读全文
摘要:前言 使用面向对象语言进行软件开发的人,对设计模式都应该有一定的情结,或多或少都接触过或者听说过若干种设计模式,比如常见的工厂模式、单例模式、模板方法等。当然,也有很多人天天和这些常用的设计模式打交道,只是因为没有系统地学习过相应设计模式,不知其理其形,所以纵使天天与其“照面”,也不相识。想来自己现在也对面向对象思想有了一定程度的理解,是时候系统地学习和整理下自己平时所熟识的种种设计模式呢。当然在园子里已经很多大牛已经写过很详细很通俗易懂的设计模式系列文章呢,自己重新再写一次,想必也不太可能总结得比大牛们还要好,但是本着学习、记录与交流的宗旨,还是大胆地将自己对设计模式的学习和理解诉诸博客中.
阅读全文
摘要:前言 排序算法自始至终都是算法类的基础或者基石。所谓排序算法是一种能将一串数据依据特定排序方式的一种算法。可以根据不同方面将众多的排序算法进行归类,比如排序的稳定方面等。所谓稳定排序指的是,不管在排序前后,待排序的若干相等元素的相对位置是恒定不变,换句话来说就是,假设元素A与B元素值相等,同时排序前元素A先于元素B,那么在排序过程结束后,元素A也必须先于元素B,我们称这样的排序算法是稳定排序算法。...
阅读全文
摘要:概念原理 遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。 遗传算法通常实现方式为一种计算机模拟。对于一个最优化问题,一定数量的候选解(称为个体)的抽象表示(称为染色体)的种群向更好的解进化。传统上,解用二进制表示(即0和1的串),但也可以用其他表示方法。进化从完全随机个体的种群...
阅读全文