过河的卒子

点点滴滴体现精彩IT人生
posts - 64, comments - 19, trackbacks - 0, articles - 68
  博客园 :: 首页 ::  :: 联系 :: 订阅 订阅 :: 管理

公告

设计模式

摘要: 定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。 当在程序中确定了所需要的通用类,但需要将具体类延迟到运行时才能确定时,原型模式是另一种可以使用的工具。原型模式与生成器模式的相似之处是,都由莫个类明确定组成最终类的部件或者细节;不同之处在于,原型模式中目标类的构建是通过克隆一个或者多个原型类,然后按预期的行为更改.阅读全文

posted @ 2011-12-11 20:12 卒子 阅读(13) | 评论 (0) 编辑 |

摘要: 生成器模式(Builder Pattern) 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们。用户不知道内部的具体构建细节。Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到。 假设需要构建一个用户界面,改页面可以根据数据量大小显示不同的风格。以投资跟踪效益程序为例图1、 图2、尽管不能事先预测在给定的时间内每种项目拥有量,但我们还是希望无论打数据量还是小数据量都能够有种直观的显示方式。我们设定两种显示方式,列表模式和多选模式。先看三种投阅读全文

posted @ 2011-12-03 18:47 卒子 阅读(18) | 评论 (0) 编辑 |

摘要: 单件模式(Singleton Pattern)是一种用于确保整个应用程序中只有一个类实例且这个实例所占资源在整个应用程序中是共享时的程序设计方法(根据实际情况,可能需要几个类实例)。在某种程度上说,单件模式是限制而不是改进一个类的创建,但他却和其他创建模式分在一个组。 单件模式可以保证一个类有且只有一个实例,并且提供一个访问他的全局访问点。在实际应用中有很多这样的情况,例如:窗口管理器,打印机或者一个COM1实例。创建单件的方法 让一个类只有一个实例有很多方法,最容易的方法是在类中设置一个静态变量,并且提供一个得到该实例对象的方法,在第一次实例对象的时候初始静态变量,以后再次实例化该类时...阅读全文

posted @ 2011-11-26 23:02 卒子 阅读(18) | 评论 (0) 编辑 |

摘要: 抽象工厂模式(Abstract Factory Pattern)比工厂方法模式具有更高层次的抽象。当要返回一系列相关类中的某一个,而每个类都能根据不同需要返回不同类时,可以使用这种模式。生活中的例子:假设一农场主要设计一个蔬菜型花园(VeggieGarden) ,如果这个花园只需要考虑三个关键地方,即:1、边缘种什么植物(borderPlant)。2、中央种什么植物(centerPlant)。3、阴凉部分种什么植物(shadePlant)。 我们的代码可以这样:publicclassVeggieBorder{publicvoidDraw();}publicclassVeggieCenter{.阅读全文

posted @ 2011-11-22 23:42 卒子 阅读(10) | 评论 (0) 编辑 |

摘要: 上次说到简单工厂模式,特点是有一个具体的类负责决定在单继承体系结构中实例化哪个子类。而工厂方法模式(Factory Method Pattern)对这种思想进行了巧妙的扩展,他不是由专门类来实例化哪个子类,相反,超类把这种决定延迟到每个子类中。这种模式实际上没有决策点,由具体应用来决定到底调用哪个。 工厂方法模式解决了许多简单工厂模式的问题。首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。工厂方法模式的对简单工厂模式进行了抽象。有一个抽象的Factory类(可以是抽象类和接口),这个类将不在负责具体的产品生产,而是只制定一些规范,具体的生产工作.阅读全文

posted @ 2011-11-19 19:12 卒子 阅读(17) | 评论 (0) 编辑 |

摘要: 简单工厂模式实际上不属于23个GoF模式中的一种。简单工厂模式是通过传入的数据返回几种可能类中的一种类的实例。但这几种类一般会有一个共同特点是,这几种类都有一个共同的父类和共同的方法,但每个方法执行的内容不同,而且根据不同的数据进行优化。下面看个例子:假设我们总是可以通过逗号或者分号来把一个名字分成firstname和lastname。用工厂模式如何实现那?1、两个派生类//基础类publicclassName{protectedstringfName;protectedstringlName; //只有基类有 public stringGetFirstName(){returnfName;.阅读全文

posted @ 2011-11-16 22:36 卒子 阅读(20) | 评论 (0) 编辑 |