
设计模式
文章平均质量分 88
jia_xiaoxin
不屈不挠、努力、坚持信念就能达成心愿!
展开
-
读《大话设计模式》---工厂方法模式(factory method)
工厂方法模式(factory method) :定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到他的子类。 简单工厂模式和工厂方法模式的区别:1.简单工厂模式简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。2.工厂方法模式工厂方法模式实现时,客户需原创 2008-11-08 23:37:00 · 1992 阅读 · 0 评论 -
读《大话设计模式》---依赖倒转原则
依赖倒转原则A.高层模块不应依赖低层模块,两个都应该依赖抽象。B.抽象不应依赖细节,细节应该依赖抽象。说白了就是要针对接口编程,不要对是想编程。 里氏代换原则(LSP)子类型必须能够替换掉它们的父类型说白了就是一个软件实体如果使用的是一个父类的话,那么它一定使用于子类,且它察觉不出父类对象和子类对象的区别。也就是说在软件里面,把父类替换成他的子类,程序的行为没有变化,简原创 2008-11-01 19:50:00 · 1727 阅读 · 4 评论 -
读《大话设计模式》---简单工厂模式(SimpleFactory)(二)
因为对C#不是很熟,所以将C#的程序转成了C++的。 // 一个超市打折的实例#include "stdafx.h"#include "stdio.h"//抽象类class CashSuper{public: virtual double acceptCash(double money) = 0;};//正常收费子类class CashNormal : public CashS原创 2008-10-13 21:53:00 · 1158 阅读 · 0 评论 -
读大《话设计模式》---简单工厂模式(SimpleFactory)(一)
[说明]简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。 简单工厂模式是由一个工厂对象决定创建出那一种产品类的实例。工厂模式的几种形态工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有以下几种形态:简单工厂(Simple Factory)模式,又称静态工厂方法模原创 2008-10-03 16:44:00 · 807 阅读 · 1 评论 -
策略模式(STRATEGY)案例分析
案例分析:有许多经典的排序算法,分别适合不同的数据结构,利用策略模式在排序对象中封装了不同的排序算法,这样以便允许客户端动态的替换排序策略(包括Quicksort、Shellsort和Mergesort)。 意图:策略模式属于对象行为型模式,主要针对一组算法,将每个算法封装到具有共同接口的独立类中,从而使得它们可以相互替换。 结构图: 程序代转载 2008-09-01 18:14:00 · 1056 阅读 · 0 评论 -
装饰模式(DECORATOR)案例分析
案例分析:我们去超市买东西,会收到购物小票,上面是你购买的物品名称、数量、单价及总价等信息,以及购物时间,收银员号码等最基本的信息,这些是基本不变的。不过有时超市还会在这张票据的上面或下面打印其他信息,例如:欢迎辞、促销广告等,而且这些信息的内容及打印位置也不固定,相当于是对购物小票的额外装饰了。意图:为一个对象动态连接附加的指责。根据案例,本程序可为购物小票动态添加各种抬头和注释。原创 2008-08-28 11:27:00 · 2033 阅读 · 1 评论 -
代理模式(Proxy)案例分析
案例分析 小李想要看奥运会的比赛,这样的话,他必须提前订票,可以通过组委会定票,然后在规定的日子去取票,不光小李,所有的观众必须都通过这个途径订票。 意图 Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作原创 2008-08-24 22:53:00 · 1083 阅读 · 0 评论 -
模板方法模式(Template Method)案例分析
案例分析:一个支持在屏幕上绘图的类View。一个视图只有在进入焦点状态后时才可以设定合适的特定绘图状态,因而只有成为“焦点”之后才可以进行绘图。View类强制其子类遵循这个规则。我们用Display模板方法来解决这个问题。View定义两个具体方法,SetFocus和ResetFocus,分别设定和清除绘图状态。 View的Dodisplay钩子操作实施真正的绘图功能。 意图:定义一转载 2008-08-26 10:59:00 · 1430 阅读 · 0 评论 -
享元模式(Flyweight)案例分析
Flyweight享元设计模式是一种结构型设计模式,它主要解决的问题是:由于(同类)对象的数量太大,采用面向对象时给系统带来了难以承受的内存开销。比如有这样一个场景:一个停车场中有1000辆汽车,我们所定义的汽车对象占用内存0.3M,那么要实例化1000辆就是300M。由此可见,在这种情况下采用一般的面向对象方式出现了大量细粒度的对象会很快充斥在系统中,从而带来很高的运行是代价(这里指的代价是内存转载 2008-08-23 19:24:00 · 1027 阅读 · 0 评论 -
工厂方法模式(Factory Methond)案例分析
案例分析:工厂方法定义一个用于创建对象的接口,但是让子类决定实例化哪个类。压注成型演示了这种模式。塑料玩具制造商加工塑料粉,将塑料注入到希望形状的模具中。玩具的类别(车,人物等等)是由模具决定的。意图:它的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将创建的工作交给子类去做。这个核心类成为一个抽象工厂的角原创 2008-08-21 13:35:00 · 1357 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory)案例分析
案例分析: 每台汽车都要有发动机和轮胎等部件,但不同品牌的汽车所用的部件应该是不同的,汽车生产厂可以有不同的生产线,每个生产线负责生产某一型号的汽车部件。例如某厂有两条生产线,一条生产宝马的部件,一条生产宝莱车的部件。客户要买什么车,就启动相应的生产线。 意图: 提供一个创建一系列相关会相互依赖对象的接口,而无须制定他们具体的类。这里结合案例将创建两条原创 2008-08-20 17:47:00 · 1144 阅读 · 0 评论 -
适配器模式(ADAPTER)案例分析
[案例]朋友从美国给我带回一个微波炉,但因为美国的生活用电电压是110V,而中国的电压是220V,所以我不能使用,幸好朋友有先见之明,给我带回一个变压器,能把220V电压转换成110V电压,我才可以放心使用了。[意图]把一个类的借口转换成客户端所期待的另一种接口,从而使原接口不匹配而无法在一起工作的两个类能在一起工作。本程序通过适配,使c220类能在c110类中使用。 程序原创 2008-08-02 13:25:00 · 1042 阅读 · 0 评论 -
桥接模式(BRIDGE)案例分析
案例分析:一个普通的开关控制的电灯、电风扇等等,都是桥接的例子。开关的目的是将设备打开或关闭。实际的开关可以是简单的双刀拉链开关,也可以是调光开关。 意图:桥接模式将抽象部分与它的实现分离,使它们能够独立地变化。案例中开关控制的对象和具体开关的类型都是可能变化的,本程序就将它们封装,具体的实现在起各自的派生类中完成。 结构图:程序代码:#include原创 2008-08-03 16:23:00 · 1356 阅读 · 0 评论 -
读《大话设计模式》---迪米特法则
迪米特法则也叫最少知识原则如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。迪米特法则首先强调的前题是在类的结构设计上,每一个类都应当尽量降低成员的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为就不要公开。原创 2008-11-19 15:15:00 · 1555 阅读 · 0 评论