dot Net Frameworks中常见的设计模式

响应一下Anders Liu的号召(http://www.cnblogs.com/AndersLiu/archive/2007/05/29/763456.html),列几个自己经常遇到的实现

 
SINGLETON:System.DBNull.Value

FACTORY METHOD:System.Data.IDbConnection.CreateCommand ()、System.Data.IDbCommand.ExecuteReader

ABSTRACT FACTORY:System.Data.IDbConnection(IDbConnection.CreateCommand是工厂方法,IDbConnection接口是个抽象工厂)

PROTOTYPE:ICloneable.Clone ()


COMPOSITE:System.Xml.XmlNode派生层次结构、System.Forms.Windows.Control派生层次结构


DECORATOR:System.Forms.Windows.Form派生层次结构、System.Forms.Windows.Control派生层次结构

PROXY:System.Runtime.Remoting.Proxies.RealProxy

COMMAND:System.Data.IDbCommand

ITERATOR:System.IEnumerable

MEDIATOR:System.Forms.Windows.Form(所有子控件的中间人)

Memento:System.Drawing.Drawing2D.GraphicsState类,System.Drawing.Graphics.Save和Restore方法
OBSERVER:System.Delegate

STRATEGY:System.Array.BinarySearch (Array array, object value, IComparer comparer)


TEMPLATE METHOD:System.Collections.CollectionBase.Contains(object item)

VISITOR:System.Data.IDataRecord算是半个吧,起码实现了Double dispatch


非GoF的设计模式
Null Object: System.EventArgs.Empty、Guid.Empty

Disopse:System.IDisposable(这个似乎是微软自封的,其实就是C++的析构函数的部分代用品)

Double Dispatch:System.Data.IDataRecord和.net frameworks的基本数据类型

转载于:https://www.cnblogs.com/omnislash/archive/2007/05/30/765469.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何构建一个向导操作模式程序

引导新用户熟悉产品的方式多种多样,向导程序是其中最经典也是最常用的一种。今天的文章,我们来聊聊向导程序的设计模式。 什么是向导程序 向导程序通常会提供一系列的步骤或者目标,让用户在完成步骤达成目标的过程中,逐步熟悉这个…

13 Tensorflow机制(翻译)

代码: tensorflow/examples/tutorials/mnist/ 本文的目的是来展示如何使用Tensorflow训练和评估手写数字识别问题。本文的观众是那些对使用Tensorflow进行机器学习感兴趣的人。 本文的目的并不是讲解机器学习。 请确认您已经安装了Tensorflow。 教程文件 文件作用mn…

鸟哥的 Linux 私房菜7 -- 首次开机关机与基本指令执行

鸟哥的 Linux 与 ADSL 私房菜 开机、关机、在线求助与指令下达方式最近更新日期:2004/05/01第一次登入系统与离开系统 图形模式与文字模式的切换方式 指令下达方式与基础指令练习 在线求助:man, info 正确的关机方式 开机过程的问题排解 本章习题练习 第…

Ignoring query to other database

Ignoring query to other database Ignoring query to other database 自己今天刚遇到,进入MySQL的时候,输入show databases; 产生如下错误 错误提示 Ignoring query to other database 郁闷,半天,怎么查询不了,开…

Qt QObject::connect: Parentheses expected错误原因

Qt 运行提示 QObject::connect: Parentheses expected, signal QUdpSocket::readyRead in …\terminal\net103.cpp:55 这个是 signal希望一个父类,其实是因为slot 函数 ,声明没有在放在private slots: 错误原因:槽函数错误的放在 private&a…

有趣的Web版Ubuntu Linux

其实这不是真的 Ubuntu 啦。不过,在看到 Wubuntu 时,其逼真的模仿效果真是令人惊叹不已。不管怎么样,让我们来体验一把 Web 版的 Ubuntu 吧。首先,我们会经历一个 Ubuntu 启动过程。其启动画面与真实的 Ubuntu 一模一样。接着&…

东软、天健、金仕达、杭创、中联、NECHIS、军字一号 HIS产品的比较

HIS主流厂商产品介绍1、沈阳东软医疗系统有限公司创立于1998年公司是中国目前最大的软件集团——东软集团为技术和资源依托,以研制生产大型医疗设备为主,同时为医院数字化提供全面解决方案。但是,公司改制后,PACS事业部与HIS事业部…

Qt 有层级关系的qss样式,使用id定位到具体控件

Qwidget 下有多个控件,区分相同和不同设置来管理; QWidget { background-image: url(:/images/homePageBackgroundDown.png); border: 2px ; border-radius: 10px; font: 24px; font-weight: 500; icon-size: 74px; padding-top:25px; padding-bottom:20…

重新定义旅游网站,米胖新版发布

还记得一年多之前,我在web 2.0 网站推荐这篇博客中提到了米胖。没多久,我认识了米胖的两位帅气又有才气的当家人。在多次聊天之后,我被他们的激情与专注深深地折服了,在那时我就坚信米胖一定能够发展得很好,走出一条属…

wait和notify使用例子

public class Test2 {public static void main(String[] args) {String lock "lock";Thread thread1 new Thread(new Runnable() {Overridepublic void run() {synchronized (lock){System.out.println("线程1开始等待" System.currentTimeMillis());tr…

Linux基础系列:常用命令(5)_samba服务与nginx服务

作业一:部署samba 每个用户有自己的目录,可以浏览内容,也可以删除 所有的用户共享一个目录,只能浏览内容,不能删 安装samba服务 1、准备环境 setenforce 0 2、安装软件包 yum -y install samba 3、修改配置文件 /etc/s…

python练习,随机数字 函数,循环,if,格式化输出

# double ball game import random count 10000000000 # 设置多少注 blue_start 1 blue_end 5 a [] def make_surprise():i 0while i < 6:i 1number random.randrange(1, 32, 1)a.append(format({:02d}.format(number)))a.append(format({:02d}.format(rando…

notify()唤醒线程,不会立即释放锁对象,需要等到当前同步代码块都执行完后才能释放锁对象

notify()唤醒线程&#xff0c;不会立即释放锁对象&#xff0c;需要等到当前同步代码块都执行完后才能释放锁对象 public class Test3 {public static void main(String[] args) {List<String> list new ArrayList<>();Thread thread1 new Thread(new Runnable(…

LINUX下的APACHE的配置

今天写一下LINUX下的APACHE的配置方法。APACHE是作为WEB服务器的。它的优点在于用缓存方式来加快网页的搜索速度。APACHE缺省只支持静态网页LINUX下有APACHE的RPM包安装上第一张盘里的httpd-2.0.40-21.i386.rpm 包1 /etc/httpd/conf.d 放在这里的都是动态网页的配置文件2 /etc/…

程序实践:命令行之连连看

命令行之连连看 程序实践周课题&#xff0c;VC6.0上可编译执行 游戏截图&#xff1a; #include <cstdio>#include <cstring> #include <iostream> #include <windows.h> #include <time.h> #include <algorithm> using namespace std; in…

Qt 进程使用 使用当前进程启动另外进程

业务场景&#xff1a; A 进程启动B进程后退出&#xff0c; B进程干完活后启动 A进程退出 1.使用 QT &#xff1a;&#xff1a;QProcess 类的接口函数 waitForStarted() 出现 A进程退出来了 B进程一直没有起来的情况&#xff0c; 2. 解决方法: 在 waitFor Started() 后加延时1s…

interrupt()会中断线程的wait等待

public class Thread5 {public static void main(String[] args) {SubThread subThread new SubThread();subThread.start();try {//主线程睡眠2秒&#xff0c;确保子线程处于wait状态Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}subThread.i…

在ASP.Net 2.0中实现多语言界面的方法

1&#xff0e; 跟以前一样做界面&#xff0c;只是注意&#xff0c;把所有需要有多语言界面的文字都用label来做 2&#xff0e; 做完以后&#xff0c;在Solution Explorer里选中这个文件&#xff0c;选Tools-&#xff1e;Generate Local Resource3&#xff0e; 你会发现生成了一…

Qt编译报 undefined vtable问题

在类添加信号槽&#xff0c;继承 QObject 后编译&#xff0c;需要先清理项目 &#xff0c;然后执行qmake&#xff0c; 再构建就不会出错&#xff0c;需要使用来moc编译一下支持信号槽源文件