摘要:
模块的耦合关系分为紧耦合和松耦合,紧耦合关系在一个模块更改时其他依赖于该模块的模块都要随之更改,而松耦合模块更改时,不会或者影响到的模块比较少. 设计模式要解决的问题就是将经常发生改变的模块抽象成接口或抽象类,让依赖该模块的其他模块调用接口类型的方法,而不关心该接口指向的对象的实际类型。 在软件系统中经常会遇到某对象的创建工作,由于需求的变化,这个对象的实现代码也会有剧烈的变化,但是无论实现的... 阅读全文
摘要:
生成器模式是比较简单且应用广泛的。 动机:在软件系统中经常面临一个复杂对象的创建工作,通常由各个部分的子对象用一定的算法构成,由于需求的变化,各个子对象会剧烈的变化,可组成复杂对象的主流程是很稳定的,这个时候就需要使用生成器模式了。 生成器模式就是为了应对复杂对象创建过程中各个子对象代码的变化的。 解决方法: 将一个复杂的对象的创建过程与子对象的创建相分离,使同样的构建过程获得不同的对象。 阅读全文
摘要:
不同于singleton模式的实现,singleton模式的实现只使用了面向对象概念中的一个封装,也就是封装了构造函数,不对外可见,对外暴露出一个获取唯一实例的方法,并没有利用到面向对象概念中的继承,多态等高级功能。
abstract factory模式说的是抽象工厂,抽象工厂中继承出了两个实际工厂,这两个实际工厂开始生产对象,两个工厂生产出来的对象风格不同,比如游戏开发中,有一个古典物品工厂,一个现代物品工厂,他们都派生与抽象工厂,都实现了创建计算工具这个方法,而古典工厂中的创建计算工具将返回一个算盘,而现代工厂返回的计算工具是一个计算器,古典工厂中创建的商人是一身汉服的店小二,现代工厂创建的商人是一身西装的小老板,这样在实际游戏中先实例化一个古典工厂,就可以依靠古典工厂得到身穿汉服拿着算盘的店小二,或者依靠现代工厂得到身穿西装拿着计算器的小老板,而不会得到一个身穿汉服却拿着计算器的店小二或者身穿西装而抱着算盘的小老板
阅读全文
摘要:
动机: 在软件系统中仅能有一个该类的实例。
保证软件系统只有一个该类的实例,这个工作应该让这个类去实现,这是该类的职责,于是应该给这个类增加一个方法,来访问该类的唯一实例。而不能让客户代码(调用该类的代码)环境来承担维护该类仅有一个实例的工作。
意图: 保证一个类仅有一个实例,并提供一个该实例的全局访问点。
实现方法: 在类中创建一个类型为该类的静态实例,使该实例成为全局唯一实例,并且以private方式封闭了构造方法,从而禁止了new的创建,而提供一个GetInstance()的公共静态方法来返回全局唯一实例。
阅读全文