摘要:
今天咱们接着上一节的行为型模式观察者模式(Oberver Pattern)、中介者模式(Mediator Pattern)、备忘录模式(Memento Pattern)给大家继续讲。在前这几节中,因为时间紧促,可能有些诠释的不到位,可能多少有点瑕疵,因为不同人的理解是不同的概念。当然希望广大读者多提建议、之间的切磋。
下面介绍观察者模式(Oberver Pattern)的定义和在什么情况下使用。
观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
使用情况:
1.对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。
2.对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。 阅读全文
摘要:
从今天开始讲行为型模式中的模版方法模式(Template Method)、命令模式(Command Pattern)、迭代器模式(Iterator Pattern)、观察者模式(Oberver Pattern)、中介者模式(Mediator Pattern)、备忘录模式(Memento Pattern)、解释器模式(Interpreter Pattern)、状态模式(State Pattern)、策略模式(Strategy Pattern)、职责链模式(Chain of Responsibility)、访问者模式(Visitor Pattern)。
下面我们介绍一下模版方法模式(Template Method)的定义和在什么情况下使用。
模板方法模式把我们不知道具体实现的步骤封装成抽象方法,提供一个按正确顺序调用它们的具体方法(这些具体方法统称为“模板 阅读全文
摘要:
先介绍一下享元模式(Flyweight Pattern)的定义和在什么情况下使用。
使用情况:在对象数量比较多时,导致运行代价提高时才使用;
定义:针对对象数量多,运用共享技术有效的支持大量细粒度对象。
定义:代理(Proxy)通常包含和将要使用的对象同样的方法,一旦开始使用这个对象,这些方法将通过代理(Proxy)传递给实际的对象。
使用情况:一个对象,比如一幅很大的图像,需要载入的时间很长,需要很长时间才可以完成的计算结果,并且需要在它计算过程中显示中间结果。这是一个需要载入和显示一幅很大的图像的程序,当程序启动时,就必须确定要显示的图像,但是实际的图像只能在完全载入后才可以显示!这时我们就可以使用代理模式(Proxy)。这个代理模式(Proxy)可以延迟实际图像的载入,直到它接收到一个paint请求。在实际图像的载入期间我们可以通过代理模式(P 阅读全文
摘要:
今天接着讲创建性模式中的组合模式(Composite Pattern)、外观模式(Façade Pattern)、享元模式(Flyweight Pattern)、代理模式(Proxy Pattern)。
组合模式(Composite Pattern),将对象以树形结构组织起来,以达成"部分-整体"的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。
1. 定义了包含简单对象和组合对象的类层次结构。简单对象可以被组合到复杂对象中,而组合的对象可以再被组合。这样客户端代码中用到简单对象的地方都可以使用组合对象。
2. 简化客户端代码。客户端不用知道某对象是简单对象还是组合对象,可以以一致的方式使用这些对象。
3. 更容易增加新类型的组件。新的组件可以方便地加入已有组合对象中不用改变客户端代码。 阅读全文
摘要:
下面章节将介绍结构型模式的适配器模式(Adapter Pattern)、桥接模式(Bridge Pattern)、装饰模式(Decorator Pattern)、组合模式(Composite Pattern)、外观模式(Façade Pattern)、享元模式(Flyweight Pattern)、代理模式(Proxy Pattern)。
下面介绍一下适配器模式(Adapter Pattern),适配器让类与类之间不至于因为接口不兼容而不能协同工作。类适配器可以使用多重继承来适配一个接口到另一个接口。
在以下情形,考虑使用适配器模式:
你要使用一个现成的类,但是它的接口不完全符合你的需求。
你要创建一个可复用的类来和无关的或者不可预见的其它类协同工作,也就是说,这个可复用的类未必一定要有兼容的接口。 阅读全文
摘要:
下面介绍创建性模式里的最后一种模式--原型模式(Protype Pattern),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
浅拷贝和深拷贝之间的区别:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制它的一个引用到目标对象。如果改变目标对象中引用型字段的值他将反映在原是对象中,也就是说原始对象中对应的字段也会发生变化。深拷贝与浅拷贝不同的是对于引用的处理,深拷贝将会在新对象中创建一个新的和原是对象中对应字段相同(内容相同)的字段,也就是说这个引用和原是对象的引用是不同的,我们在改变新对象中的这个字段的时候是不会影响到原始对象中对应字段的内容。所以对于原型模式也有不同的两种处理方法:对象的浅拷贝和深拷贝。在FCL中的System命名空间下面有一个浅拷贝的方法叫:MemberwiseClone它是创建当前Obj 阅读全文
摘要:
接下来介绍一下创建性模式里的单件模式(Singleton Pattern)、抽象工厂模式(Abstract Factory)、建造者模式(Builder Pattern)、工厂方法(Factory Method)和原型模式(Protype Pattern).
首先要回忆一下前面讲过的一些概念,理解所具有的含义,然后再来看看图示和实例。
单件模式(Singleton Pattern)实例如下:
Public Class FaxNumber
{
Private Static FaxNumber _instance=null;
Private FaxNumber
{
}
Public Static FaxNumber GetInstance()
{
if(_instance== 阅读全文
摘要:
设计模式,这个名词我也不是很早听说的,大概也就是07年的9月份左右才知晓,其实最早是在java领域听说的,后来微软方面推出了C#的设计模式,设计模式其实都是相通的,目前还有Ajax设计模式.自我嘲笑的是曾一时我把设计模式等同于架构模式,譬如MVC架构。 因为本身设计模式和框架就关系比较亲密,很容易混淆。
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。可复用面向对象软件系统现在一般划分为三大类:应用程序 工具箱和框架(Framework),我们平时开发的具体软件都是应用程序;Java的API属于工具箱;而框架是构成一类特定软件可复用设计的一组相互协作的类。 阅读全文
摘要:
今天我讲讲面向对象的编程,在现代编程中常常遇到的重用、继承、多态、抽象,针对这些概念性的东西一一解释一下override(重写),必须要和原型需要一致性,也就是说相同的方法名,相同的参数列表,相同的返回值类型,通过覆写实现。重写派生类的virtual方法,也可以说重写派生类中基类的方法,C#方法在重写时,一般在用new关键字, 阅读全文
摘要:
2008年写的一篇有关SilverLight 2.0的一篇文章,现再次温习一下。今天我讲一下在asp.net中使用SilverLight 2.0的用法,当然今天不会很深入给大家讲解sl的开发,由于本人文才欠缺,只是简单讲解一下它的安装和部署是怎么做的,希望大家不要扔板儿砖。
今天我讲一下在asp.net中使用SilverLight 2.0的用法,当然今天不会很深入给大家讲解sl的开发,由于本人文才欠缺,只是简单讲解一下它的安装和部署是怎么做的,希望大家不要扔砖块儿。
现在我给大家讲解一下SilverLight 2.0的安装:
1.对于访问者或者是浏览者,如果你使用的是IE6或更低的版本,必须安装SilverLight 2.0的安装包;当然对于其他的浏览器,像火狐、遨游、QQ、绿色等其他浏览器,可能也必须要安装SilverLight 2.0安装包 阅读全文
摘要:
最近在网上很流行arp木马病毒,肆意在许多网站上流窜,电脑弄的很糟糕,我不得不从瑞星换到了江民,新的杀毒软件比以前的版本好多了,虽然有了杀毒软件的支撑,还是难免被中招,打开很多知名网站,布局都被打乱了,只希望这些写病毒的高手能为我们中国争口气,不要再让中国的网民遭受此痛苦了,好好维护我们的网络国界,避免老外黑掉我们的网站,避免老外的病毒流向我们的网络国界,捍卫网际领土! 阅读全文
摘要:
最近闲暇,维护一下早期个人开发的家庭理财产品,其中也借鉴了不少新技术。当然也要感谢《博客园》培养了我,给我很多知识源泉。废话少说,先发张截图供大家LOOK!LOOK!
该软件曾基于VS2005、VS2008环境开发,有Microsoft Access 2000/2003/2007为数据库。曾经在网上有一定的下载量,通过长时间的不断积累,软件逐步完善,在当时有一定的好评。
本软件比较适合家用,适合家庭理财的软件。经过多年的不断完善,并没有商用,同时为本人积累了经验财富。再最近的一次版本中,曾用到了某ERP的架构和新的编程思路。
这里要感谢帮助我、支持我的那些微软MVP及业界的好哥们,目前一直在间断性的完善和补充,期待下一新的版本出炉! 阅读全文
摘要:
对每个方法属性都加上如上格式的注释.然后在类库工程属性当中指定XML的输出路径.XML文件名称要和工程名称相同.再进行编译即可. 这样当用户工程在引用此DLL的时候,它会自动加载生成的同名的XML注释文件.这样当用户使用的时候就会弹出各个部分的注释说明..
Dim A As New Class1( "s" )
A.MethodA( " ", " " )
小心使用放在App_Code中类的静态成员
每个ASP.NET应用程序都可以添加一个App_Code文件夹。放置在这一文件夹下的类可以被此ASP.NET应用程序中的所有页面所使用,可将这些类称为“全局类”,用起来很方便。
然而,如果这些类中定义了静态成员,则访问这些成员必须小心陷井。 阅读全文
摘要:
关于WWF的安装方法:
在vs2005里安装WWF,必须要安装.net framework 3.0才可以,之所以要安装.net 3.0,他的框架包含workflow,.net 3.0已经包括了很多插件,已经升级很多功能。
在C#里使用My对象的方法:
My对象一直在VB里被使用,下面我们介绍一下My对象在C#里使用的方法:在打开一个项目后,在VS2005的项目里添加引用,在.net选项页选择“Microsoft.VisualBasic”命名空间,点“确定”添加引用,要注意一点的是在VS2003里会添加到Bin目录里,在VS2005里是将设置信息添加到Web.Config里.
然后在CS代码里需添加下列命名空间: 阅读全文
摘要:
下面是我初试中软融鑫的笔试题的一部分,现总结如下:(请广大博友指正)
Q1:C#中的委托是什么?事件是不是一种委托?
答:委托是一个可以对方法进行引用的类。与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用。这样,委托就等效于一个类型安全函数指针或一个回调。事件是一种委托。
Q2:什么是Web Service?什么时候用到web service?您对WebService的体会?
答:特殊的web应用程序,http协议,80端口,按照soap协议xml协议进行封装,传递的是xml的信息报包。跨平台,无处不到;速度慢,服务器压力大。
Q3:DataGrid分页机制是什么?
阅读全文
摘要:
小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗?
3月4日、3月5日、3月8日、6月4日、6月7日、9月1日、9月5日、12月1日、12月2日、12月8日
小明说:如果我不知道的话,小强肯定也不知道
小强说:本来我也不知道,但是现在我知道了
小明说:哦,那我也知道了
请根据以上对话判断出张老师的生日是哪一天?
答:根据逻辑推断采用排除法,最后应该是3月4号。 阅读全文
摘要:
自从Microsoft公司推出SQL Server 2005以后,我还没真正用过它的新特性,Microsoft公司推出新软件也太快了,目前SQL Server 2008也推出了,没办法,赶不上形式啊!今天我就介绍一下SQL Server 2005的新特性,和我使用的感受,我会根据一些抽象名词和个别新特性着重解释,其中借鉴了doNews的一篇文章。
下面我介绍一下SQL Server 2005的新特性:
一、企业级数据管理
1、易管理
SQL Server 管理工具集、主动性能监视和性能调谐、SQL 管理对象
2、可用性
数据库镜像、故障转移集群、数据库快照、快速恢复、专用的管理员连接、联机操作(索引操作和恢复)、复制
3、可伸缩性
表和索引分区、快照隔离、复制监视工具、对64-Bit系统Itanium2和x64的支持
4、安全性
授权、认证、本机加密、SQL可信 阅读全文
摘要:
公司:北京众网时代传媒广告有限公司
工作地点:北京,海淀区
标题:招聘高级网页设计师
具体要求:
1. 计算机相关专业大专以上学历
2. 两年以上相关工作经验,具有企业VI,网站策划能力
2. 精通DHTML/DIV/CSS 2.0熟悉JavaScript和Flash AS编程
3. 具有深厚的美术功底和良好的创意构思能力,对色彩有深刻的把握力、独特的设计风格、独到的创意视点与创新意识。
4. 有强烈的团队合作精神;良好的沟通能力!
5. 了解各浏览器的兼容差异,并能熟练的解决具佳。 阅读全文
摘要:
多数据库间的SQL调用(下面举例两个数据库):
select * from 数据库1名.用户名.表名 JOIN 数据库2名.用户名.表名 ON 数据库1名.用户名.表名.链接字段=数据库2名.用户名.表名.链接字段
不是同一台服务器需要做linked server,然后OpenQuery之类的方法查询,或者select * from 服务器名.数据库名.拥有者名.表名 这种四段式格式访问。
在同一台服务器更简单,假如你当前正use B,而要访问A,只要select * from A.拥有者(dbo的话可以省略不写).表 三段式格式即可。
当然前提是你要有足够的权限。
ASP.NET页面间保持持久信息的方法: 阅读全文
摘要:
Webservice 作为一项新的技术出现在我们面前,它的出世是用于解决在不同的平台下的应用的协同的。目前几乎每家厂商都要去开发Webservice 应用,然而如果缺乏对Webservice更深的了解,不能很好的在设计阶段处理好一些重要的问题,那么最终完成的系统必然是效率低下,没有可靠性的产品。
在设计Webservice 应用时,以下几点务必要考虑到:
1 管理好与外系统的协同关系
2 掌握底层的传输模型
3 提供与应用相适应的安全策略
4 计划好部署的相关事项 阅读全文