随笔分类 -  ASP.NET

上一页 1 2 3 4 下一页

C#中override与new的区别
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Demo{ // 基类 public class ParentClass { public ParentClass() { Console.WriteLine("在基类的构造方法"); } // 用virtual才可以在子类中用override,而new不需要这样 public virtual void ... 阅读全文

posted @ 2012-06-20 08:04 zhuhai 阅读(177) 评论(0) 推荐(0)

让ATM告诉你什么是封装——读《你必须知道的.net》
摘要:例如每当发工资的日子小王都来到 ATM机前,用工资卡取走一笔钱为女朋友买礼物,从这个很帅的动作,可以得出以下的结论:— 小王和ATM机之间,以银行卡进行交互。要取钱,请交卡。— 小王并不知道ATM机将钱放在什么地方,取款机如何计算钱款,又如何通过银行卡返回小王所要数目的钱。对小王来说,ATM就是一个黑匣子,只能等着取钱;而对银行来说,ATM机就像银行自己的一份子,是安全、可靠、健壮的员工。— 小王要想取到自己的钱,必须遵守 ATM机的对外约定。他的任何违反约定的行为都被视为不轨,例如欲以砖头砸开取钱,用公交卡冒名取钱,盗卡取钱都将面临法律风险,所以小王只能安分守己地过着月光族的日子。那么小王和 阅读全文

posted @ 2012-06-19 22:45 zhuhai 阅读(355) 评论(0) 推荐(0)

属性——读《你必须知道的.net》
摘要:属性(property)通常定义为 public,表示类的对外成员。属性具有可读、可写属性,通过 get 和 set访问器来实现其读写控制。例如上文中 Client 类的字段,我们可以相应地封装其为属性。public class Client{ private string name; //用户姓名 public string Name { get { return name; } set { name = value == null ? String.Empty : value; } } private int age; //用户年龄 public int Age { get { retur 阅读全文

posted @ 2012-06-19 22:23 zhuhai 阅读(153) 评论(0) 推荐(0)

C#委托基础(九)——Invoke与委托
摘要:例子一:delegate void AppendStringCallback(string text); private void AppendString(string txt){ this.listView1.Items.Add(txt);} private void ReceiveDate(){ AppendStringCallback appendStringCallback = new AppendStringCallback(AppendString); this.Invoke(appendStringCallback, new object[] { st... 阅读全文

posted @ 2012-06-19 22:15 zhuhai 阅读(1997) 评论(0) 推荐(0)

asp.net上传图片预览【兼容IE7,IE8】
摘要:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xml 阅读全文

posted @ 2012-06-06 11:26 zhuhai 阅读(651) 评论(0) 推荐(0)

excel 中插入图片(很不错的方法)
摘要:/// <summary> /// 插入图片 /// </summary> /// <param name="sheet">工作表</param> /// <param name="imageFilePath">图片的绝对路径</param> /// <param name="rowNumber">单元格行号</param> /// <param name="columnNumber">单元格列号</p 阅读全文

posted @ 2012-06-06 11:19 zhuhai 阅读(1051) 评论(0) 推荐(0)

IIS默认站点停止,启动 发生意外错误 Ox8ffe2740 IIS站点红色的Error
摘要:现象:IIS默认站点停止,启动时发生意外Ox8ffe2740错误;或者IIS站点前有红色的Error,无法启动IIS症状:1、IIS默认站点停止,启动时发生意外Ox8ffe2740错误;2、或者IIS站点前有红色的Error,无法启动IIS ,提示“服务器没有及时响应或控制请求”原因一:IIS 80端口被占用解决方法有两种 :一、关闭占用80端口的程序二、或者修改IIS端口为其它未用端口,如81端口;相应的,站点也修改到对应的81端口。详细步骤:方法一:使用DOS命令找到占用80端口的程序,关闭该程序在开始——运行中输入以下命令:1、netstat -an -p tcp -o(小写字母o) ( 阅读全文

posted @ 2012-06-01 17:56 zhuhai 阅读(282) 评论(0) 推荐(0)

VS2008生成WebSite和WebApplication的区别(转载)
摘要:WebApplication编程模型的优点: ●网站编译速度快,使用了增量编译模式,仅仅只有文件被修改后,这部分才会被增量编译进去。 ●生成的程序集 WebSite:生成随机的程序集名,需要通过插件WebDeployment才可以生成单一程序集 WebApplication:可以指定网站项目生成单一程序集,因为是独立的程序集,所以和其他项目一样可以指定应用程序集的名字、版本、输出位置等信息 ●可以将网站拆分成多个项目以方便管理 ●可以从项目中和源代码管理中排除一个文件 ●支持VSTS的Team Build方便每日构建 ●更强大的代码检查功能,并且检查策略受源代码控制 ●可以对编译前后进行自己规 阅读全文

posted @ 2012-06-01 10:20 zhuhai 阅读(199) 评论(0) 推荐(0)

设计模式笔记(24)---访问者模式(行为型)
摘要:Gof定义表示一个作用于某对象结构中的各元素的操作。它可以在不改变各元素的类的前提下定义作用于这些元素的新的操作。动机在软件构建过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改,将会给子类带来很繁重的变更负担,甚至破坏原有设计。如何在不更改类层次结构的前提下,在运行时根据需要透明地为类层次结构上的各个类动态添加新的操作,从而避免上述问题?请看下面访问者模式结构图和代码。访问者模式结构图:基本代码如下:/// <summary>/// 声明了一个或多个需要添加的操作/// </summary>public abstract 阅读全文

posted @ 2012-05-25 15:02 zhuhai 阅读(173) 评论(0) 推荐(0)

设计模式笔记(25)---总结
摘要:断断续续经历了几个月的时间将WebCast的设计模式讲座重新完整听了一遍,并做了笔记,才有了这个设计模式笔记系列,本系列的文章大部分只是给出了基本代码的实现,而并没有去衍生其他的一些例子,笔者认为通过基本的代码实现就能够了解到模式的应用场景,弄出些花哨的例子反倒会让人眼花缭乱,可能并达不到预期的效果,毕竟在实际的应用中我们不是去套用模式。本文作为该系列的最后一篇,将对设计模式做个总结。首先看下创建型、结构型、行为型这三种类型的模式的解释创建型Singleton模式解决的是实体对象个数的问题。除了Singleton之外,其他创建型模式解决的都是new所带来的耦合关系。Factory Method 阅读全文

posted @ 2012-05-25 15:02 zhuhai 阅读(136) 评论(0) 推荐(0)

设计模式笔记(23)---策略者模式(行为型)
摘要:Gof定义定义一系列算法,把它们一个个封装起来,并且使它们可互相替换。该模式使得算法可独立于使用它的客 户而变化。动机在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题?看下面的策略者模式的结构图和基本代码,策略者模式比较简单,下面只是给出基本的代码实现。策略者模式结构图:基本实现代码:/// <summary>/// 抽象算法类/// </summary>public abstrac 阅读全文

posted @ 2012-05-25 15:00 zhuhai 阅读(154) 评论(0) 推荐(0)

设计模式笔记(22)---状态模式(行为型)
摘要:Gof定义允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。动机在软件构建过程中,某些对象的状态如果改变,其行为也会随之而发生变化,比如文档处于只读状态,其支持的行为和读写状态支持的行为就可能完全不同。如何在运行时根据对象的状态来透明地更改对象的行为?而不会为对象操作和状态转化之间引入紧耦合?看下面状态模式的结构图和代码。状态模式结构图:日常生活中我们常见的灯会有两种状态开和关,当灯亮着时我们可以用开关使之熄灭,反之则变量,看下面的代码就是改变灯的开关状态的一个过程:/// <summary>/// 灯的状态开和关/// </summary> 阅读全文

posted @ 2012-05-25 14:59 zhuhai 阅读(182) 评论(0) 推荐(0)

设计模式笔记(21)---备忘录模式(行为型)
摘要:Gof定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。动机在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节实现。如何实现对象状态的良好保存与恢复?但同时又不会因此而破坏对象本身的封装性,看下面的结构图和代码。备忘录模式结构图:上图中Originator为原发器,也可以讲发起者,可以创建一个备忘录(CreateMemento),Memento为备忘录,负责存储原发器中的内部状态。Caretake 阅读全文

posted @ 2012-05-25 14:58 zhuhai 阅读(176) 评论(0) 推荐(0)

设计模式笔记(20)---职责链模式(行为型)
摘要:Gof定义使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。动机在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显式指定,将必不可少地带来请求发送者与接受者的紧耦合。如何使请求的发送者不需要指定具体的接受者?让请求的接受者自己在运行时决定来处理请求,从而使两者解耦。职责链模式结构图如下:代码实现:/// <summary>/// 抽象处理类/// </summary>public abstract class BaseHandler{ pu 阅读全文

posted @ 2012-05-25 14:57 zhuhai 阅读(167) 评论(0) 推荐(0)

设计模式笔记(19)---观察者模式(行为型)
摘要:Gof定义定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通 知并自动更新动机在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。看这样一个场景,银行的ATM机在处理完成银行账户的存入或取出后会给用户发送手机短信和电子邮件,那么就会有这样三个对象,BankAccount Emailer Mobile,代码如下: 阅读全文

posted @ 2012-05-25 14:56 zhuhai 阅读(203) 评论(0) 推荐(0)

设计模式笔记(18)---迭代器模式(行为型)
摘要:Gof定义提供一种方法顺序访问一个聚合对象中的各个元素, 而又不暴露该对象的内部表示。动机在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为“同一种算法在多种集合对象上进行操作”提供了可能。使用面向对象技术将这种遍历机制抽象为“迭代器对象”为“应对变化中的集合对象”提供了一种优雅的方式。迭代器模式结构图:Aggregate:集合结构接口Iterator:迭代器接口Concreteaggregate:集合结构的具体类,继承Aggregate接口ConcreteIteator:具 阅读全文

posted @ 2012-05-25 14:54 zhuhai 阅读(137) 评论(0) 推荐(0)

设计模式笔记(17)---中介者模式(行为型)
摘要:Gof定义用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。动机在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。在这种情况下,我们可使用一个“中介对象”来管理对象间的关联关系,避免相互交互的对象之间的紧耦合引用关系,从而更好地抵御变化。中介者模式的结构图:代码实现:/// <summary>/// 抽象的中介者/// </summary>public abstract class Media 阅读全文

posted @ 2012-05-25 14:51 zhuhai 阅读(181) 评论(0) 推荐(0)

设计模式笔记(16)---解释器模式(行为型)
摘要:Gof定义给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解释语言中的句 子。动机在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。在这种情况下,将特定领域的问题表达为某种语法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的。下面看下解释器模式的结构图基本代码:/// <summary>/// 上下文信息/// </summary>public class Context{ public string Data { get; set; }}// 阅读全文

posted @ 2012-05-25 14:50 zhuhai 阅读(148) 评论(0) 推荐(0)

设计模式笔记(15)---命令模式(行为型)
摘要:Gof定义将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。动机在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合——比如需 要对行为进行“记录、撤销/重做(undo/redo)、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。先来看个反例(版本1),假设在一个应用程序中需要用到要用到很多的一些外部的类,并且要对这些类中的操作进行撤销、记录等操作,如果像下面这样实现就会很乱并且不容易实现:pu 阅读全文

posted @ 2012-05-25 14:48 zhuhai 阅读(169) 评论(0) 推荐(0)

设计模式笔记(14)---模板方法模式(行为型)
摘要:Gof定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个 算法的结构即可重定义该算法的某些特定步骤。动机在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期实现需求?模板方法模式结构图:AbstractClass类:这个抽象类中定义了一个模板方法TemplateMethod,该方法通常为一个具体方法,将抽象类中的一些抽象的操作组合在其中,推迟到子类实现 阅读全文

posted @ 2012-05-25 14:47 zhuhai 阅读(124) 评论(0) 推荐(0)

上一页 1 2 3 4 下一页

导航

我的百度空间