Edward_jie

for you, my Hall of Frame

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  92 随笔 :: 45 文章 :: 539 评论 :: 43万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  c#

上一页 1 2 3 下一页

摘要:工厂模式,设计模式中普遍分成了三种,简单工厂、工厂方法和抽象工厂模式。看到一个名字,我首先会去思考它为什么被人们起为这样的名字,对于设计模式,想要明白到底是怎么回事,当然也要从名字开始。简单工厂,是针对同样具有某种属性和动作的对象进行抽象和封装的开始,简单工厂当然就是量少的工厂,我们完全可以项目的生存期中能够考虑到的为数不多的工厂整合到一个工厂类中,每一个工厂中,我们建造出特定的产品,这些产品都有共同的属性和动作,我们事先将他们写进一个抽象产品类中,以便客户端随时进行实例化其需要的产品,并且在日后的维护升级过程中,可以直接改动相应的产品类,而不影响到其他产品。工厂方法,是简单工厂不再简单的时候 阅读全文
posted @ 2012-05-21 15:41 Edward_诺 阅读(1924) 评论(1) 推荐(2) 编辑

摘要:Composite组合模式主要是应对这样的问题:一类具有“容器特征”的对象——即他们在充当对象的同时,又是其他对象的容器的情况。在编写时我们常常会造成:客户代码过多地依赖于对象容器复杂的内部实现,对象容器内部实现结构(而非抽象接口)的变化将引起客户代码的频繁变化,带来了代码的维护性、扩展性的弊端。 GoF《设计模式》中说到:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite模式使得客户对单个对象和组合对象的使用具有一致性。 Composite组合模式结构如下: 说道这,我觉得有一个编程中常见的场景,就是对于树的实现,很符合这个模式。下面我就用这个例子作一下。 首先,我们先分 阅读全文
posted @ 2012-05-16 16:32 Edward_诺 阅读(3048) 评论(0) 推荐(1) 编辑

摘要:结构模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构。结构模式描述两种不同的东西:类与类的实例。根据这一点,结构模式可以分为类的结构模式和对象的结构模式。 后续内容将包括以下结构模式: 适配器模式(Adapter):Match interfaces of di 阅读全文
posted @ 2012-05-16 11:03 Edward_诺 阅读(3867) 评论(1) 推荐(1) 编辑

摘要:一、 命令(Command)模式 命令(Command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请 阅读全文
posted @ 2012-05-15 23:45 Edward_诺 阅读(4944) 评论(0) 推荐(0) 编辑

摘要:设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。 GoF的“设计模式”是第一次将设计模式提升到理论高度,并将之规范化,本书提出了23种基本设计模式,自此,在可复用面向对象软件的发展过程中,新的大量的设计模式不断出现。一、设计模式和框架 现在,可复用面向对象软件系统现在一般划分为三大类:应用程序工具箱和框架(Framework),我们平时. 阅读全文
posted @ 2012-05-15 18:01 Edward_诺 阅读(13991) 评论(0) 推荐(7) 编辑

摘要:Observer 与 Subject 互为耦合,但是这种耦合的双方都依赖于抽象,而不依赖于具体。一、观察者模式目的 概述 原理二、 C#中的观察者模式概述 模型与观察者基类 优点三、 事例题目:猫大叫,两只老鼠开始逃跑,主人醒来,宝宝也醒来了并且哭了起来解决方案: 1. 建立模型(目标基类) 2. 建立观察者基类(单行为,多行为) 3. 建立具体目标 4. 建立具体观察者 5. 运行测试一、 观察者模式目的我们都知道解决一个问题有N种解决方式,但在面向对象的设计中如何能做到“高内聚,低耦合”,设计可重用的对象才是我们追求的。在设计过程中,我们经常会接触到一种情况:一个对象的行为引发其它多个对象 阅读全文
posted @ 2012-05-14 23:20 Edward_诺 阅读(24845) 评论(11) 推荐(20) 编辑

摘要:单例模式三种写法:第一种最简单,但没有考虑线程安全,在多线程时可能会出问题,不过俺从没看过出错的现象,表鄙视我……publicclassSingleton{privatestaticSingleton_instance=null;privateSingleton(){}publicstaticSingletonCreateInstance(){if(_instance==null){_instance=newSingleton();}return_instance;}}第二种考虑了线程安全,不过有点烦,但绝对是正规写法,经典的一叉publicclassSingleton{privatevola 阅读全文
posted @ 2012-05-10 14:19 Edward_诺 阅读(47872) 评论(4) 推荐(13) 编辑

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

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

摘要:引入人、工厂、和斧子的问题: (1),原始社会时,劳动社会基本没有分工,需要斧子的人(调用者)只好自己去磨一把斧子,每个人拥有自己的斧子,如果把大家的石斧改为铁斧,需要每个人都要学会磨铁斧的本领,工作效率极低。对应Java里的情形是:java程序里的调用者new一个被调用者的实例。类耦合度极高,修改维护烦琐,效率极低。 (2),工业社会时,工厂出现,斧子不再由普通人完成,而由工厂生产,当人们需要斧子的时候,可以到工厂购买斧子,无需关心斧子是怎么制造出来的,如果废弃铁斧为钢斧,只需改变工厂的制造工艺即可,制作工艺是工厂决定的,工厂生产什么斧子,工人们就得用什么斧子。 对应的Java里的情形是.. 阅读全文
posted @ 2012-05-10 13:35 Edward_诺 阅读(28152) 评论(1) 推荐(4) 编辑

摘要:private void grid_show_perm(int status) { string sql = "";//从视图中查询一定的数据,并且赋值给一个中间变量的表aTable sql = "SELECT ID,姓名,注册时间,状态,客服人员,预算,户型结构,面积,派单公司,房屋类型,下次联系时间 FROM view_assess_client where ID in (select clientId from clientinfo where client_status = " + status + " )"; DataTab 阅读全文
posted @ 2012-04-25 13:10 Edward_诺 阅读(439) 评论(0) 推荐(0) 编辑

摘要:C# 语言经过专门设计,以便不同库中的基类与派生类之间的版本控制可以不断向前发展,同时保持向后兼容。这具有多方面的意义。例如,这意味着在基类中引入与派生类中的某个成员具有相同名称的新成员在 C# 中是完全支持的,不会导致意外行为。它还意味着类必须显式声明某方法是要重写一个继承方法,还是一个隐藏具有类似名称的继承方法的新方法。 在 C# 中,派生类可以包含与基类方法同名的方法。 基类方法必须定义为 virtual。如果派生类中的方法前面没有 new 或 override 关键字,则编译器将发出警告,该方法将有如存在 new 关键字一样执行操作。如果派生类中的方法前面带有 new 关键字,则该方法 阅读全文
posted @ 2012-02-03 17:03 Edward_诺 阅读(446) 评论(0) 推荐(0) 编辑

摘要:“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。Lambda 表达式 x => x * x 读作“x goes to x times x”。可以将此表达式分配给委托类型,如下所示:delegate int del(int i);del myDelegate = x => x * x;int j = myDelegate(5); //j = 25创建表达式目 阅读全文
posted @ 2012-02-02 14:14 Edward_诺 阅读(342) 评论(0) 推荐(0) 编辑

摘要:byte[] vals = { 0x01, 0xAA, 0xB1, 0xDC, 0x10, 0xDD };string str = BitConverter.ToString(vals);Console.WriteLine(str);str = BitConverter.ToString(vals).Replace("-", "");Console.WriteLine(str);/*Output: 01-AA-B1-DC-10-DD 01AAB1DC10DD*/ 阅读全文
posted @ 2012-01-31 14:54 Edward_诺 阅读(582) 评论(0) 推荐(0) 编辑

摘要:什么是查询?它有什么用途?“查询”是指一组指令,这些指令描述要从一个或多个给定数据源检索的数据以及返回的数据应该使用的格式和组织形式。查询不同于它所产生的结果。通常,源数据会在逻辑上组织为相同种类的元素序列。SQL 数据库表包含一个行序列。与此类似,ADO.NETDataRow 包含一个 DataTable 对象序列。在 XML 文件中,有一个 XML 元素“序列”(不过这些元素按分层形式组织为树结构)。内存中的集合包含一个对象序列。从应用程序的角度来看,原始源数据的具体类型和结构并不重要。应用程序始终将源数据视为一个 IEnumerable(Of T) 或 IQueryable(Of T) 阅读全文
posted @ 2012-01-16 13:03 Edward_诺 阅读(3866) 评论(0) 推荐(0) 编辑

摘要:使用非泛型集合类的限制可以通过编写一小段程序来演示,该程序利用 .NET Framework 基类库中的 ArrayList 集合类。ArrayList 是一个使用起来非常方便的集合类,无需进行修改即可用来存储任何引用或值类型。// The .NET Framework 1.1 way to create a list:System.Collections.ArrayList list1 = new System.Collections.ArrayList();list1.Add(3);list1.Add(105);System.Collections.ArrayList list2 = ne 阅读全文
posted @ 2012-01-14 01:49 Edward_诺 阅读(11961) 评论(0) 推荐(2) 编辑

摘要:本示例演示如何组合多路广播委托。委托对象的一个用途在于,可以使用 + 运算符将它们分配给一个要成为多路广播委托的委托实例。组合的委托可调用组成它的那两个委托。只有相同类型的委托才可以组合。- 运算符可用来从组合的委托移除组件委托。示例delegate void Del(string s);class TestClass{ static void Hello(string s) { System.Console.WriteLine(" Hello, {0}!", s); } static void Goodbye(string s) { ... 阅读全文
posted @ 2012-01-12 16:13 Edward_诺 阅读(3618) 评论(0) 推荐(0) 编辑

摘要:索引器允许类或结构的实例就像数组一样进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。在下面的示例中,定义了一个泛型类,并为其提供了简单的 get 和 set 访问器方法(作为分配和检索值的方法)。Program 类为存储字符串创建了此类的一个实例。class SampleCollection<T>{ private T[] arr = new T[100]; public T this[int i] { get { return arr[i]; } set { ... 阅读全文
posted @ 2012-01-12 11:54 Edward_诺 阅读(6100) 评论(0) 推荐(0) 编辑

摘要:接口使用 interface 关键字进行定义,如下面的示例所示:interface IEquatable<T>{ bool Equals(T obj);}接口描述的是可属于任何类或结构的一组相关功能。接口可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。接口不能包含字段。接口成员一定是公共的。当类或结构继承接口时,意味着该类或结构为该接口定义的所有成员提供实现。接口本身不提供类或结构能够以继承基类功能的方式继承的任何功能。但是,如果基类实现接口,派生类将继承该实现。类和结构可以按照类继承基类或结构的类似方式继承接口,但有两个例外:类或结构可继承多个接口。类或结构继承接口时 阅读全文
posted @ 2012-01-12 11:04 Edward_诺 阅读(1073) 评论(0) 推荐(0) 编辑

摘要:尽管对象初始值设定项可以用在任何上下文中,但它们在 LINQ 查询表达式中尤其有用。查询表达式经常使用匿名类型,而这些类型只能使用对象初始值设定项进行初始化。在 select 子句中,查询表达式可以将原始序列的对象转换为可能具有不同的值和形式的对象。如果您只想存储某个序列中每个对象的部分信息,这会非常有用。在下面的示例中,假定某个产品对象 (p) 包含很多字段和方法,而您只想创建包含产品名称和单价的对象序列。var productInfos = from p in products select new { p.ProductName, p.UnitPrice };当执行此查询时... 阅读全文
posted @ 2012-01-12 09:57 Edward_诺 阅读(15107) 评论(0) 推荐(1) 编辑

上一页 1 2 3 下一页
点击右上角即可分享
微信分享提示