- 博客(40)
- 收藏
- 关注
原创 SRP:单一职责原则
SRP:单一职责原则1.定义:一个类应该只有一个发生变化的原因。 2.分析:如果一个累承担了多于一个的职责,那么引起它变化的原因就会有多个,就等于把这些职责耦合在了一起。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭到意想不到的破坏。 3.定义职责:在SRP中,我们把职责定义为变化的原因,如果你能想到多于一个的动机去改
2012-04-16 22:09:45
5915
原创 敏捷软件开发
前段时间进许了设计模式的学习,收获挺多的。接下来学习敏捷软件开发(原则、模式与实践),继续加强设计模式的学习,了解软件设计原则,并通过一个案例将设计原则和设计模式运用到真实的项目当中去。备注:(1)参考书籍《敏捷软件开发--原则、模式与实践C#版》Bob大师所著(2)博客中的设计和案例都来自于参考书籍,主要是为了加强理解和记忆。努力,努力,再努力!
2012-04-16 20:56:23
561
原创 中介者模式(Mediator Pattern)
中介者模式(Mediator Pattern)用一个中介者对象来封装一系列对象交互。中介者使得各对象不需要相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。依赖关系的转化 动机(Motivate): 在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系, 如果遇到一些需求的更改,这种直接的引用关系将面
2012-04-12 22:17:04
443
原创 职责链模式(Chain Of Responsibility)
职责链模式(Chain Of Responsibility)动机(Motivate): 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定, 将必不可少地带来请求发送者与接受者的紧耦合。 如何使请求的发送者不需要指定具体的接受者?让请求的接受者自己在运行时决定来处理请求,从而使两者解耦。意图(Intent):
2012-04-10 22:19:32
383
原创 命令模式(Command Pattern)
命令模式(Command Pattern)将一个请求封装为一个对象,从而使你可用不同的请求对客户进许参数化;对请求排队或记录请求日志,以及支持撤销的操作。 /// /// Command类:抽象命令类,类中只需要确定命令最终执行者Receiver即可 /// 声明执行操作的接口 /// abstract class Command
2012-04-10 22:16:37
423
原创 桥接模式(Bride Pattern):
桥接模式(Bride Pattern):将抽象部分与它的实现部分分离开来,使它们都可以独立的变化。 /// /// 抽象实现类 /// abstract class Implementor { public abstract void Operation(); } /// /// 具体实现
2012-04-06 22:18:18
2411
原创 单例模式(Sigleton Pattern)
单例模式(Sigleton Pattern):保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能纺织你实例化多个对象,一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其它实例可以被创建,并且它可以提供一个访问该实例的方法。 public class Sigleton {
2012-04-06 22:15:53
538
原创 组合模式(Composite Pattern)
组合模式(Composite Pattern):将对象组合成树形结构以表示“部分”-“整体”的层次结构。组合模式使得用户对单个对象的处理和组合复杂的对象处理具有一致性。/// /// Component为组合对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。 /// 声明一个接口用于访问和管理Component的子部件 /// ab
2012-03-28 22:51:31
309
原创 状态模式(State Pattern)
状态模式(State Pattern):当一个对象的内在状态变化时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件过于复杂时的情况。把状态的判断逻辑移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简单化。/// /// 抽象状态类,定义一个接口以封装与Context的一个特定状态相关的行为 /// 包含Cont
2012-03-27 22:31:56
361
原创 适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern):将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原来由于接口不兼容而不能一起工作的那些类可以一起工作。/// /// Target类:这是客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 /// public class Target { publi
2012-03-27 22:29:31
334
原创 备忘录模式(Memento Pattern)
备忘录模式(Memento Pattern):在不破环封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象回复到保存前的状态。/// /// Originator:负责创建一个备忘录(Memento),用以记录当前时刻它的内部状态,并可以使用备忘录回复 /// 内部状态。Originator可根据需要决定Memento存储Or
2012-03-27 22:27:37
796
原创 抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。AbstractFactory:抽象工厂。声明生成抽象产品的方法ConcreteFactory:具体工厂。执行生成抽象产品的方法,生成一个具体的产品。AbstractProduct:抽象产品。为一种产品声明接口。Product:具体产品类。定义具
2012-03-21 23:09:43
532
原创 观察者模式(Observer Pattern)
观察者模式(Observer Pattern):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使它们能够自动更新自己。Subject类:被观察对象(1)它把所有对观察者的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观测者对象。ConcreteSubjec
2012-03-21 23:05:44
493
原创 建造者模式(Builder Pattern)
建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以创建它们,用户不知道内部具体的构建细节。Builder:抽象建造者(1)为创建 一个Product对象的各个部件指定抽象接口。ConcreteBuilder:具体建造者
2012-03-19 23:03:28
387
原创 原型模式(Prototype Pattern)
原型模式(Prototype Pattern):用原型实例创建指定的对象的种类,并且通过拷贝这些原型创建新的对象。Prototype:原型类,声明一个克隆自身的接口。ConcretePrototype:具体的原型类,继承Prototype,实现一个克隆自身的操作。Clinet:让一个原型克隆自身从而创建一个新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需
2012-03-12 23:03:23
523
原创 工厂方法模式
工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例延迟到其子类。工厂方法模式是简单工厂模式的的抽象和推广。在简单工厂模式中,一个工厂类处于对产品类进许实例化的中心位置,它知道每一个产品类的细节,并决定何时哪一个产品类应当被实例化。简单工厂模式的优点是能够使客户端独立于产品的创建过程,并且在系统中
2012-03-11 22:43:58
375
原创 代理模式
代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。客户端调用时直接使用代理来访问。结构说明(结构图略)Subject类:定义了RealSubject和Proxy的公用接口,这样就在任何使用RealSubject的地方都可以用Proxy类代理访问。RealSubject类:定义了Proxy所代表的真实实体Proxy类:保存一个引用使得代理可以访
2012-03-07 23:21:08
322
原创 装饰模式
注:信息来源《大话设计模式》 装饰模式(DecoratorPattern):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。Component:是定义一个对象接口,可以给这些对象动态的添加职责;ConcreteComponent:是定义了一个具体的对象,也可以给这个对象添加一些职责;Decorator,装饰抽象类,继承了Component,维
2012-03-07 22:08:30
470
原创 策略模式
策略模式(Stratergy):定义了算法的家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的用户。【DP定义】从概念上来说,所有的算法完成的工作都是相同的,只是实现不同,策略模式可以以相同的方式调用不同的算法,减少了各种算法类与使用算法类之间的耦合。应用场合:不同的时间或者不同的情况下使用不同的业务规则时可以考虑使用策略模式。实例:商场收银软
2012-03-03 23:41:38
722
原创 简单工厂模式
简单工厂模式说明:当需要创建类的实例时却不知道到底应该创建哪一个类时,选择用简单工厂模式。专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。其实质是有一个工厂累根据传入的参量,动态决定应创建出哪一个累的实例。实例说明1.薪资管理系统假定公司薪资分为技术人员(月薪),市场营销人员(底薪+提成),经理(年薪+股份)三种运算算法,如果我们把三种运算写在一个类中,
2012-02-28 22:06:01
297
原创 设计模式学习
09年9月参加工作,到现在也两年多了,但总感觉自己的能力没有达到质的飞跃,一些东西还是处于会与不会,懂与不懂之间,这个坎儿能难迈过去。前段时间买了本《大话设计模式》,看了一点儿后有种茅塞顿开、豁然开朗的感觉。在这儿把自己所学与理解的东西写出来与大家分享,希望对也有我这种情况的同仁们有点儿帮助,也希望大家多提意见。本人写文字功能不是很好,所以以后的文章中多会以代码的形式体现。废话也不多说了,接下来就
2012-02-28 21:47:27
286
原创 将货币转换为大写VB
Public Class ConvertMoney '输入字串 Private _InputString As String '输出字串,如果无效则输出错误信息 Private _OutString As String '判断输出字串是否有效 Private _Valiad As Boolean Public Writ
2011-05-19 17:10:00
977
原创 使用ASPOSE导出DataGrid数据到Excel(VB)
'介绍:采用Aspose导出EXCEL '导出数据到EXCEL文件 '--------------------------------------------------------------------------------------- '说明:只能导出一个DATAGRID,并将DATAGRID中显示的数据保存到EXCEL中 ' DATAGRI
2011-04-08 09:44:00
1529
转载 js中createElement的使用
//创建formvar _form=document.createElement_x('form');_form.setAttribute('name','myform');_form.setAttribute('action','');_form.setAttribute('method','post');//创建表var _table=document.createEl
2011-02-21 23:32:00
9676
2
转载 JS对数组的操作总结
1、数组的创建var arrayObj = new Array(); //创建一个数组var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值 要说明的是,虽然第
2011-02-21 23:20:00
529
原创 asp.net中Server.Transfer和Response.Redirect的区别
Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面。调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器
2011-02-18 14:00:00
469
转载 C#委托和事件
http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/903360.html http://www.cnblogs.com/JimmyZhang/archive/2008/08/22/1274342.html
2011-02-18 11:22:00
279
原创 C#修饰符
1.private修饰符用于设置类或类成员的访问权限仅为所属类的内部。2.protected修饰符用于设置类或类成员的访问权限仅为所属类及子类的内部。3.internal修饰符修饰的类或类成员的访问权限为同一程序集内部4.public修饰符则为公共访问权限,对代码的访问没有任何限制。
2011-02-18 10:31:00
269
原创 C#中的数组谈
//二维数组 int[,] inti = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } }; //定义一个2行3列的数组并为其赋值 for (int i = 0; i { for (i
2011-02-18 10:11:00
433
原创 使用SQLDMO进行数据库备份与还原
bakServer.cs类 using System;using System.Data;using System.Configuration;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlCo
2011-02-14 17:18:00
1143
原创 JS各种数据验证
//只允许输入数字和小数点,且第一位只能是数字 function validateDecimals(obj){ var re = /^/d+(?=/.{0,1}/d+$|$)/ if(obj.value!="") { if (!obj.value.match(re)) { ret
2011-02-14 17:12:00
953
原创 JS写的Calendar日历控件
//----------------------------------------------------------------------------// 主调用函数是 wpCalendar(this,[object])wpCalendar(this),[object]是控件输出的控件名,举两个例子:// 一、// 二、// 本日历的年份限制是(1000 - 9999
2011-02-14 16:46:00
5802
原创 asp.net+ajax仿搜索提示效果代码
JS代码: //创建一个xmlhttp对象function createXmlHttp(){ var xmlHttp; // 检测MSXMLHTTP版本,为了兼容IE各个版本 var activeKey = new Array("MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0",
2011-02-14 16:40:00
1532
原创 asp.net(c#) RSS功能实现代码
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls;
2011-02-14 11:33:00
452
转载 asp.net 设置GridView的选中行
var currentRowId = 0; function SelectRow() { if (event.keyCode == 40) MarkRow(currentRowId+1); else if (event.keyCode == 38) MarkRow(currentRowId-1); } function MarkRow(rowId) { if
2011-02-14 11:27:00
1993
转载 ASP.NET性能优化小结
ASP.NET: 一、返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求。每次往返降低了你的应用程序的每秒能够响应请求的次数。通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的系统具有扩展性,也可以减少数据库服务器响应请求的工作量。 如果用动态的SQL语句来返回多个数据集,那用存储过程来替代动态的SQL语句会更好些。是否把
2011-02-14 11:18:00
494
原创 asp.net下将页面内容导入到word模板中的方法
1,新建word模版,方法是找需要用程序填充的word文档,在需要输入的地方用"书签"(插入-->书签-->输入id-->ok)标记后保存既可. 2,在word模版上修改安全添加everyone 可读,以防文件无法打开. 3,在工程里添加"引用"找到"Microsoft Word 10.0 Object Library"或"Microsoft Word 11.0 Object Librar
2011-02-14 11:08:00
1037
转载 ASP.NET中常用的三十三种代码
1. 打开新的窗口并传送参数: 传送参数: response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>")接收参数: string a = Request.QueryString("id"); string b = Reque
2011-02-14 11:03:00
350
转载 .NET(C#)连接各类数据库代码-集锦
1.C#连接连接Access代码如下:using System.Data; using System.Data.OleDb; .. string strConnection="Provider=Microsoft.Jet.OleDb.4.0;"; strConnection+=@"Data Source=C:BegASPNETNorthwind.mdb"; OleD
2011-02-14 10:43:00
368
转载 C# XML操作 代码大全(读XML,写XML,更新,删除节点,与dataset结合等)
已知有一个XML文件(bookstore.xml)如下: Corets, Eva 5.95 1、插入节点 往节点中插入一个节点:XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load("bookstore.xml"); XmlNode root=xmlDoc.SelectSingleNode("bookstore");//
2011-02-14 10:40:00
463
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人