网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
设计模式初学者系列-工厂方法
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式
 new A广告纸();break;
            case B : return new B广告纸();break;
          //……..
            //如果没有满足的型别码则调用父类的实现返回一个默认广告纸
            default : base.Get广告纸(型别码);
}
}
}
 

其中 默认广告纸,A广告纸,B广告纸都是广告纸的子类。然后流水线就依赖这个Creator类,Creator类是一个稳定的类。有人说,把广告纸创建的工作分离到另外一个类就可以了,干吗那么麻烦还要弄个父类,然后弄个继承啊。记不记得有个原则叫SDP(稳定依赖原则,朝着稳定的方向进行依赖)?流水线依赖这个稳定的Creator类,子类让他自己弄去吧。

看到上面的例子我们并没有抑制变化的发生(这是不可能的),但是我们封装了变化而提供了不变的接口。

DotNet中的工厂方法

ado.net 2.0中微软在原来的IDBConnection和具体实现 如 SqlConnection等之间增加了一个抽象类DBConnection,将一些重复东西放到这个抽象层。DBConnection里有个CreateCommand,这就是一个工厂方法,由于有了这个方法的存在我们可以写出这样的代码:

public override User GetUserByUserName(string userName)
        {
            using (DbConnection conn = GetConnection())
            {
                User u;
                using (DbCommand comm = conn.CreateCommand())
                {
                    comm.CommandType = CommandType.Text;
                    comm.CommandText = GETUSERBYUSERNAME_TRAP_USER;
                    SetUserNameParam(userName, comm);
                    conn.Open();
                    using (DbDataReader reader = comm.ExecuteReader(CommandBehavior.CloseConnection))
                    {
                        if (!reader.Read()) return n
  • 上一篇资讯: C#操作RTF文档
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号