2012年4月24日

设计模式 一 引言

摘要: 如何描述一个设计模式: 模式名和分类 模式名简洁地描述了模式的本质。意图 设计是做什么的?它的基本原理和意图是什么?他解决的是什么样的特定的设计问题别名动机 用以说明以俄国设计问题以及如何用模式中的类、对象来解决该问题的特定情景。该情景会帮助你理解随后对模式更抽象的描述。适用性 什么情况下可以使用该设计模式?该设计模式可用来改进那些不良的设计?你怎样识别这些情况?结构 采用基于对象建模技术的表示法对模式中的类进行图形描述。我们也使用了交互图来说明对象之间的请求序列和协作关系。参与者 指设计模式的类和或对象以及它们各自的职责协作 模式的参与者怎样协作以实现它们的职责效果 模式怎样支持它的目标.. 阅读全文

posted @ 2012-04-24 22:13 lufangtao 阅读(443) 评论(0) 推荐(0) 编辑

Head First--设计模式 单件模式 独一无二的对象

摘要: 单件模式(Singleton Pattern):用来创建独一无二的,只能有一个实例的对象的入场券。 经典的一个单件 public class Singleton{ private static Singleton uniqueInstance; private Singleton(){} public static Singleton getInstance(){ if(uniqueInstance==null) { uniqueInstance=new Singleton(); } returnuniqueInstance; } } 单件模式:确保一个类只有一个... 阅读全文

posted @ 2012-04-24 19:37 lufangtao 阅读(462) 评论(0) 推荐(0) 编辑

Head First--设计模式 工厂模式 烘烤OO的精华

摘要: 工程(factory)除了创建对象的细节。我觉得还是先记下书上的例子吧,再说了,这个例子很有意思。我们创建一个简单的披萨工厂类(simplePizzaFactory)。 public class SimplePizzaFactory { public Pizza CreatePizza(string type) { Pizza pizza=null; if(type.equals("cheese")) pizza=new CheesePizza(); else if(type.equals("pepperoni")) pizza=new Pepperon 阅读全文

posted @ 2012-04-24 16:00 lufangtao 阅读(481) 评论(0) 推荐(0) 编辑

2012年4月21日

Head First--设计模式(装饰者模式)

摘要: 从现在开始,我将以写一个小软件的方式来进行模式识别的学习,包含需求分析,功能模块设计,原理图设计,程序实现这个几个部分,可能具体的模式模块不可能都包括在内。 需求分析:星巴兹咖啡店已经遍布全世界的很多对方,我们需要写个软件对它的咖啡店进行管理,主要是客户需要咖啡种类的管理,例如,我想要一个奶油咖啡,另一个人可能需要一个摩卡咖啡,所有,咖啡的种类会有很多,也就是可以理解为,咖啡加上它的修饰者,会产生很多的咖啡种类。并且,咖啡的不同的修饰者的添加数目不定,相同的修饰者添加数目也不定。所以,如果使用类继承,会产生类爆炸的情况,我们将使用装饰者模式进行设计。 装饰者模式:动态地将责任附加到对象上... 阅读全文

posted @ 2012-04-21 16:44 lufangtao 阅读(239) 评论(0) 推荐(0) 编辑

2012年4月20日

Head First--设计模式(观察者模式Observer)

摘要: 我们首先给出观察者模式的定义: 观察者模式:定义了对象之间的一对多的依赖,这样一来,当一个对象改变状态时,它的所有的依赖者都会收到通知并自动更新。 通过这个模式,我们创建了一种松耦合的程序,当两个对象之间松耦合,它们依然可以交互,但是不太清楚彼此的细节。 这也是一条设计原则:为了交互对象之间的松耦合设计而努力。 下面,我把我认为好的一张示意图放在下面,一张很好的队观察者模式进行说明的一张图:同过这张图,我觉就可以完全传递了这个模式了,关于完整代码,我将放到后面。Weather.rar 阅读全文

posted @ 2012-04-20 22:30 lufangtao 阅读(217) 评论(0) 推荐(0) 编辑

2012年4月17日

Head First--设计模式

摘要: 看了第一章的入门内容,我觉得真的很有意思,下面我就把书上那个对Duck类的学习总结一下,我们从问题的提出开始。问题一开始是这样的:设计一个Duck类,这个类时很多种类鸭子的超类,于是,我们不加思索的设计了下面的代码: public class Duck{ void quack();//鸭子叫声virtual void display();//鸭子的外观显示 void swim();//鸭子都会游泳}public class MallardDuck:Duck{void override display(){//显示为绿鸭子}}public class ReadheadDuck:Duck{... 阅读全文

posted @ 2012-04-17 19:52 lufangtao 阅读(265) 评论(0) 推荐(0) 编辑

.NET 设计规范--.NET约定、惯用法与模式--附录:C#编程风格约定

摘要: 1.通用风格约定 1.1 花括号的使用 要把左括号放在前一条语句的末尾 if(someExpression){ DoSomething(); } 要使右括号与左括号所在行的首行对齐,除非花括号内只有一条语句 要把右括号放在新的一行的开始处 考虑把只有一条语句的代码块和左右花括号写在同一行中。属性的访问方法经常使用这种风格 public int Foo{ get {return foo;} set{foo=value;}} 考虑把只有一个访问方法的属性的所有的花括号写在同一行中。 public int Foo{get{return foo;}} 要使花括号单独占一行,除... 阅读全文

posted @ 2012-04-17 14:39 lufangtao 阅读(426) 评论(0) 推荐(0) 编辑

.NET 设计规范--.NET约定、惯用法与模式--8.使用规范

摘要: 这里就如何在公用API中使用常用类型提供提供一些规范。 8.1数组 要在公用API中优先使用集合,而不是优先使用数组。 不要使用只读的数组字段。虽然字段本身是只读的,用户不能对其进行修改,但对用户可以修改数组中的元素 有两种方法可以避免使用只读的数组字段,一种是使用只读的集合,另一种是在返回数组之前对其进行复制 考虑使用不规则数组(jagged array),而不是要使用多维数组 //jagged arrays int [][] jaggedArray={ new int[]{1,2,3,4}, new int[]{5,6,7}, new int[]{8}, new ... 阅读全文

posted @ 2012-04-17 09:53 lufangtao 阅读(317) 评论(0) 推荐(0) 编辑

2012年4月16日

.NET 设计规范--.NET约定、惯用法与模式--7.异常

摘要: 7.1 抛出异常 操作失败就是成员不能完成应该完成的任务(成员的名字所暗示的任务)。 不要返回错误码 要通过抛出异常的方式来报告操作失败 考虑用过调用System.Environment.FailFast来终止进程,而不要抛出异常,如果代码遇到了严重问题,已经无法继续安全地执行。 不要将正常的控制流中使用异常,如果能够避免的话 考虑抛出异常可能会对性能造成的影响 要为所有的异常撰写文档,并把它们作为协定的一部分,前提是这些异常时由于违反了公有成员的协定而抛出的。 不要让公有成员根据某个选项来决定是否抛出异常 不要把异常用作公有成员的返回值或输出参数 考虑使用辅助方法来创建异... 阅读全文

posted @ 2012-04-16 21:32 lufangtao 阅读(324) 评论(0) 推荐(0) 编辑

2012年4月10日

.NET 设计规范--.NET约定、惯用法与模式--6.为扩展性而设计

摘要: 6.1 扩展机制 6.1.1 非密封类 密封类即无法派生子类,也无法扩展。与此相反,非密封类可以派生子类进行扩展 //string cannot be inherited from public sealed class String{} //TraceSource can be inherited from public class TraceSource{} 正因为如此,如果需要既简单有开销不大的扩展方法,那么没有声明任何虚成员或保护成员的非密封类时不错的选择。 考虑用不包含任何虚成员或保护成员的非密封类来为框架提供扩展性,这种方法的开销不高,用户也喜欢。 6.1.2 保... 阅读全文

posted @ 2012-04-10 20:51 lufangtao 阅读(271) 评论(0) 推荐(0) 编辑

导航