2012年4月30日

C#设计模式(6)-Abstract Factory Pattern

摘要: 一、 抽象工厂(Abstract Factory)模式抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。为了方便引进抽象工厂模式,引进一个新概念:产品族(Product Family)。所谓产品族,是指位于不同产品等级结构,功能相关联的产品组成的家族。如图: 图中一共有四个产品族,分布于三个不同的产品等级结构中。只要指明一个产品所处的产品族以及它所属的等级结构,就可以唯一的确定这个产品。引进抽象工厂模式所谓的抽象工厂是指一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对象。如果用图来描述的话,如下图: 二、 Abstract Factory模式的结构: 图中 阅读全文

posted @ 2012-04-30 16:08 lbg 阅读(95) 评论(0) 推荐(0) 编辑

2012年4月16日

C#设计模式(5)-Factory Method Pattern

摘要: 一、工厂方法(Factory Method)模式工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不接触哪一个产品类被实例化这种细节。这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。在Factory Method模式中,工厂类与产品类往往具有平行的等 阅读全文

posted @ 2012-04-16 22:50 lbg 阅读(123) 评论(0) 推荐(0) 编辑

2012年4月5日

C#设计模式(4)-Simple Factory Pattern

摘要: 工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有以下几种形态:简单工厂(Simple Factory)模式 工厂方法(Factory Method)模式 抽象工厂(Abstract Factory)模式 一、 简单工厂(Simple Factory)模式 Simple Factory模式根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的父类和公共的方法。Simple Factory模式实际上不是GoF 23个设计模式中的一员。二、 Simple Factory模式角色与结构:工厂类角色C 阅读全文

posted @ 2012-04-05 10:35 lbg 阅读(101) 评论(0) 推荐(0) 编辑

2012年3月18日

设计模式(3) 转

摘要: 三、 依赖倒置原则(DIP) 依赖倒置(Dependence Inversion Principle)原则讲的是:要依赖于抽象,不要依赖于具体。简单的说,依赖倒置原则要求客户端依赖于抽象耦合。原则表述:抽象不应当依赖于细节;细节应当依赖于抽象;要针对接口编程,不针对实现编程。反面例子: 缺点:耦合太紧密,Light发生变化将影响ToggleSwitch。解决办法一:将Light作成Abstract,然后具体类继承自Light。优点:ToggleSwitch依赖于抽象类Light,具有更高的稳定性,而BulbLight与TubeLight继承... 阅读全文

posted @ 2012-03-18 08:18 lbg 阅读(164) 评论(0) 推荐(0) 编辑

2012年2月29日

C#设计模式(2) 转

摘要: 五、 .net本质关于"先有鸡还是先有蛋"的程序,系统运行后,内存结构如下: 由图中可以看出,根本不存在鸡与蛋的问题,而是型与值的问题以及指针引用的问题。关于"大瓶子套小瓶子还是小瓶子套大瓶子"问题,系统运行后,内存结构如下: 由于是指针引用,所以也无所谓大瓶子还是小瓶子了。C#设计模式(2) 《人月神话》焦油坑、没有银弹* 软件腐化的原因:问题所在 设计目标----------------------------------------------------------------------------过于僵硬 可扩展性(新性能可以很容易加入系统) 阅读全文

posted @ 2012-02-29 18:01 lbg 阅读(175) 评论(0) 推荐(0) 编辑

2012年2月13日

C#设计模式(1)转

摘要: 一、 C# 面向对象程序设计复习内容包括:字段与属性属性、方法作用范围一加到一百使用接口排序(2)使用接口排序(1)求质数冒泡法排序九九表静态与非静态构造函数方法重载多态性递归求阶乘打印三角形传值调用与引用调用二、 设计模式举例在设计模式中有一种模式叫Builder模式,其原理如下:我们可以将Builder理解成电饭锅,给这个Builder放进去米和水,经过Builder的Build后,我们就可以取出香喷喷的米饭了。C#中有一个类叫StringBuilder,输入必要的信息后,就可以取出对应的String。其使用方法如下: using System; using Syst... 阅读全文

posted @ 2012-02-13 10:39 lbg 阅读(140) 评论(0) 推荐(0) 编辑

2012年1月31日

正则表达式学习(六)转

摘要: 还有些什么东西没提到 上边已经描述了构造正则表达式的大量元素,但是还有很多没有提到的东西。下面是一些未提到的元素的列表,包含语法和简单的说明。你可以在网上找到更详细的参考资料来学习它们--当你需要用到它们的时候。如果你安装了MSDN Library,你也可以在里面找到.net下正则表达式详细的文档。这里的介绍很简略,如果你需要更详细的信息,而又没有在电脑上安装MSDN Library,可以查看关于正则表达式语言元素的MSDN在线文档。 表7.尚未详细讨论的语法 代码/语法 说明 \a 报警字符(打印它的效果是电脑嘀一声) \b 通常是单词分界位置,但如果在字符类里使用代表退格 \t 制表符,T 阅读全文

posted @ 2012-01-31 10:28 lbg 阅读(140) 评论(0) 推荐(0) 编辑

2012年1月12日

正则表达式学习(五)转

摘要: 续注释小括号的另一种用途是通过语法(?#comment)来包含注释。例如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)。要包含注释的话,最好是启用“忽略模式里的空白符”选项,这样在编写表达式时能任意的添加空格,Tab,换行,而实际使用时这些都将被忽略。启用这个选项后,在#后面到这一行结束的所有文本都将被当成注释忽略掉。例如,我们可以前面的一个表达式写成这样: (?<= # 断言要匹配的文本的前缀 <(\w+)> # 查找尖括号括起来的字母或数字(即HTML/XML标签) ) # 前缀结束 .* # 匹配任 阅读全文

posted @ 2012-01-12 17:48 lbg 阅读(185) 评论(0) 推荐(0) 编辑

2011年12月30日

正则表达式学习(四) (转)

摘要: 反义有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义:表3.常用的反义代码 代码/语法 说明 \W 匹配任意不是字母,数字,下划线,汉字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非数字的字符 \B 匹配不是单词开头或结束的位置 [^x] 匹配除了x以外的任意字符 [^aeiou] 匹配除了aeiou这几个字母以外的任意字符例子:\S+匹配不包含空白符的字符串。<a[^>]+>匹配用尖括号括起来的以a开头的字符串。后向引用 使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可 阅读全文

posted @ 2011-12-30 12:47 lbg 阅读(148) 评论(0) 推荐(0) 编辑

2011年12月14日

正则表达式学习(三) (转)

摘要: 字符转义如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你应该使用\.和\*。当然,要查找\本身,你也得用\\.例如:unibetter\.com匹配unibetter.com,C:\\Windows匹配C:\Windows。重复你已经看过了前面的*,+,{2},{5,12}这几个匹配重复的方式了。下面是正则表达式中所有的限定符(指定数量的代码,例如*,{5,12}等):表2.常用的限定符 代码/语法 说明 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n 阅读全文

posted @ 2011-12-14 13:18 lbg 阅读(152) 评论(0) 推荐(0) 编辑

导航