频道栏目
首页 > 资讯 > ASP.Net > 正文

步步为营 .NET 设计模式学习笔记 五、Prototype(原型模式) 概述

11-04-07        来源:[db:作者]  
收藏   我要投稿

概述

在软件系统中,有时候面临的产品类是动态变化的,而且这个产品类具有一定的等级结构。这时如果用工厂模式,则与产品类等级结构平行的工厂方法类也要随着这种变化而变化,显然不大合适。那么如何封装这种动态的变化?从而使依赖于这些易变对象的客户程序不随着产品类变化?

意图

在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。如何应对这种变化?如何向“客户程序(使用这些对象的程序)”隔离出“这些易变对象” ,从而使得“依赖这些易变对象的客户程序”不随着需求改变而改变?

<Design Pattern>示例图 

生物学例子

Prototype模式使用原型实例指定创建对象的种类。新产品的原型通常是先于全部产品建立的,这样的原型是被动的,并不参与复制它自己。一个细胞的有丝分裂,产生两个同样的细胞,是一个扮演主动角色复制自己原型的例子,这演示了原型模式。一个细胞分裂,产生两个同样基因型的细胞。换句话说,细胞克隆了自己。

依赖关系的倒置
– 抽象A直接依赖于实现细节b
抽象不应该依赖于实现细节,实现细节应该依赖于抽象。

image


–抽象A依赖于抽象B,实
现细节b依赖于抽象B

image

示例解说:

狼是很有团队精神的,每次出现都是一队狼群,这次我们举例每次四个狼组成一队出现.我们只要提供一个狼的实例,其它的都复制它,改一改属性就可以了.这种模式正是我们的原型模式.

结构图:

下面我们来创建代码:

先建Location.cs:

01 [Serializable]
02 public  class Location
03  {
04     private int _X;
05     private int _Y;
06     public int X
07     {
08         get { return _X; }
09         set { _X = value; }
10     }
11     public int Y
12     {
13         get { return _Y; }
14         set { _
相关TAG标签
上一篇:JavaScript克隆对象的三个实用方法
下一篇:C#中的collection类
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站