摘要: 使用反射技术实现MDI父/子窗口的分离,插件式开发的实践 阅读全文
posted @ 2012-10-09 01:33 萨迦狐 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 设计模式——桥模式需求从现实故事说起,长虹与海尔都是大的电视机生产商,都能够生产21英寸与37英寸的电视,这个问题应该如何建模呢?下面尝试使用继承关系实现: // 定义一个制造商接口 public interface IManufacturer { void ShowName(); } // 再定义一个电视接口 public interface ITV { void Produce(); } // 定义2个电视机子类 public class TV21inches : ITV // 21英寸电视机 { public void Produce() { Console.WriteLine(&quo 阅读全文
posted @ 2012-10-08 15:12 萨迦狐 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 设计模式——装饰模式需求从一个编程任务说起。有段旧代码如下: public class Girl { public virtual void GoSchool() { Console.Write("女孩去上学!"); } }客户提出了新的要求,随着时代的进步,现代女孩上学还需要增加新的功能,有带个花花帽子,穿个漂亮裙子,画眉涂口红等可选功能,但是旧类不允许修改,因为旧的功能还是适合那些传统女孩,还在那些情况下有用。总结就是:不修改旧类代码的情况下,需要增加新的功能;这些新增的功能还可以任意组合。下面先尝试用继承机制来实现。继承旧类来实现添加功能:女孩戴个花花帽子 publi 阅读全文
posted @ 2012-10-07 17:16 萨迦狐 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 设计模式——代理模式需求现实生活中,我们难免会需要对一些不熟悉的行业处理事情,常常就找专业的中介机构来代办这些事情:例如法律事务聘请律师代理办案,买二手房找专业的房产中介代办,银行基金理财找基金理财顾问,这些专业的中介都是代理模式(Proxy Pattern)的实际应用。在程序开发中,也有类似的事情。例如设计好了业务规则类,又想添加权限控制。如果直接修改业务规则类代码加进去,则违反了单一职责的原理。那么可以再设计一个代理类,在这里代理类里调用业务规则功能,但是添加需要的权限控制就可以了。还有一种情况,如果开发的系统会依赖于其它系统的某些功能,但是那些被依赖的系统可能因为这样那样的原因还不稳定, 阅读全文
posted @ 2012-10-07 00:48 萨迦狐 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 本人学习MSPetShop,结合自己实践经验总结的C#三层结构,就叫做MSPetShop3Tiers吧。 非常需要与同好者交流。 阅读全文
posted @ 2012-10-06 00:45 萨迦狐 阅读(462) 评论(0) 推荐(0) 编辑
摘要: 本人学习MSPetShop,结合自己实践经验总结的C#三层结构,就叫做MSPetShop3Tiers吧。 非常需要与同好者交流。 阅读全文
posted @ 2012-10-06 00:42 萨迦狐 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 设计模式——适配器模式需求你想使用一个已经存在的类,但是它的接口不符合你的要求,怎么办?这样的问题在生活中很普遍:现在大部分笔记本电脑使用USB接口,而现在大部分键盘使用PS2接口,可以使用PS2/USB接口转换器把它们接起来。编程也可以采用这种转换器的思想。定义适配器模式(Adapter Pattern):将一个类的接口,转换成客户期望的另一个类的接口。适配器让原本接口不兼容的类可以合作无间。别名包装(Wrapper)模式。适配器模式的实现方法可以概括为:单独设计一个适配器(Adapter)类,包装(Wrapper)需要适配的源(Adaptee),继承/实现需要适配的目标(Target),重 阅读全文
posted @ 2012-10-05 04:12 萨迦狐 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 作者:sagahu@163.com 日期:2011-12-28块元素一般用作其它页面元素的容器,可以容纳行内元素和块级元素。行内元素只能容纳文本或者其它行内元素form标签是块级元素,一般用来容纳其它块级元素。看下面示例(从浏览器菜单查看HTML源文件):(1)据说,form标签只能容纳其它块元素,但是现在普通文本也容纳了啊!其实,在form标签里是允许写文本和行元素的,只是这样不好!(2)行元素里面能够容纳块元素吗?其实是可以的,但是这样是不符合XHTML验证规则的! 阅读全文
posted @ 2012-10-05 00:33 萨迦狐 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 作者:sagahu@163.com 日期:2011-12-21CSS继承选择器与包含选择器的作用很像,其类似点主要有:继承选择器的子孙元素可以继承到祖先元素的某些样式;而包含选择器的子元素可以得到其父元素的某些样式。不是祖先元素/父元素的所有样式属性都能为子孙元素/被包含的子元素得到,只是某一些(可查阅相关资料)。其不同点也有:继承选择器的子孙元素无论是祖先元素的多少级子孙,都满足这种继承关系,因而可以继承到祖先元素的某些属性;而包含选择器的被包含子元素只能是被父元素直接包含,才是匹配那个包含选择器,因而才能得到那个选择器定义的某些样式。例如:p b { ... } // 标签b继承标签p定义 阅读全文
posted @ 2012-10-05 00:30 萨迦狐 阅读(907) 评论(0) 推荐(0) 编辑
摘要: 来源:杂烩搜集整理:sagahu@163.com 日期:2012-01-04 匿名方法是C#2.0引入的一个新特性,它允许开发者内联(inline)声明自己的函数代码而无须使用委托函数(delegate function)。匿名方法通常在:(1) 需要一个临时方法,该方法使用次数极少;(2) 这个方法的代码很短,甚至可能比方法声明都短的情况下使用。在C# 1.1里,声明和使用委托要求你有委托和一个在委托被触发时具有匹配签名的能够执行的命名方法,以及一个将命名方法与委托关联的分配语句——这是C#2.0之前版本中,实例化委托的唯一方法。作为C# 2.0的新特性,匿名方法基本上能够提供与先前命名方法 阅读全文
posted @ 2012-10-05 00:11 萨迦狐 阅读(205) 评论(0) 推荐(0) 编辑