将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示

                                                                 --《设计模式》GOF

Insus.NET在ASP.NET环境中,列举一个建造者设计模式(Builder)例子,以最帖近开发环境与需求。

开发站点时,我们需要开发新闻类,视频类,图片类等等。每个网页还有可能是页头,内容,页脚等。开发这些页头,内容与页脚时,我们会使用用户控件来写好,加载至网页中去。

每个类别的网页,你分别新建三个用户控件(ascx), NewsHeader,NewsContent,NewsFooter, xxxHeader,xxxContent,xxxFooter等......

NewsHeader.ascx:

NewsContent.ascx:

NewsFooter.ascx:

就是说,把网页每块做成用户控件,这样细化与维护。

现在我们需要建造一个网页(产品),这个产品是由三个部件组成。

你的网页会有很多,如上所列举的,显示文章,新闻,视频,图片等。我们需要定义一个抽象的共同接口,让具体类有一个统一标准:

建造者设计模式,还一个角色,就是指挥者:

现在我们可以建造具体类,真实产品(网页),NewPage, VideoPage,ArticlePage 等等:

现在,我们需要在实际的网页中去展示完整的产品(网页):
在xxx.aspx中,拉一个控件容器,如PlaceHolder,这里只是举列,实际环境中,也许需要拉好几个容器,来在网页定义与动态加载。

xxx.aspx.cs:

网页运行时,看看效果:

下面内容于2014-12-23 13:32分补充:
忘记把完整的演示代码分享了:http://download.cnblogs.com/insus/CSharpNET/DesignPattern_Builder.rar

设计模式--建造者(Builder)模式的更多相关文章

  1. Java设计模式-建造者(Builder)模式

    目录 由来 使用 1. 定义抽象 Builder 2. 定义具体 Builder类 3. 定义具体 Director类 4. 测试 定义 文字定义 结构图 优点 举例 @ 最近在看Mybatis的源码 ...

  2. 设计模式:Builder模式

    设计模式:Builder模式 一.前言    今天我们讨论一下Builder建造者模式,这个Builder,其实和模板模式非常的像,但是也有区别,那就是在模板模式中父类对子类中的实现进行操作,在父类之 ...

  3. Java设计模式之builder模式

    Java设计模式之builder模式 今天学mybatis的时候,知道了SQLSessionFactory使用的是builder模式来生成的.再次整理一下什么是builder模式以及应用场景. 1. ...

  4. 设计模式C++描述----07.建造者(Builder)模式

    一. 概述 Builder 模式要解决的问题是:当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成),我们要要复杂对象的创建过程和这个对象的表示(展示)分离开 来,这样做的好处就是通过一步 ...

  5. 建造者(Builder)模式

    建造者模式是对象的创建模式.建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 产品的 ...

  6. 《Android源码设计模式》--Builder模式

    No1: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 No2: 在Android源码中,最常用到的Builder模式就是AlertDialog.Builder No3: ...

  7. c++设计模式系列----builder模式

    看了好几处关于builder模式的书和博客,总感觉不是很清楚,感觉不少书上的说的也不是很准确.最后还是看回圣经<设计模式>.看了好久终于感觉明白了一点了. 意图: builder模式提出的 ...

  8. [转]C++设计模式:Builder模式

    Builder模式要解决的问题是,当我们要创建很复杂的对象时,有时候需要将复杂对象的创建过程和这个对象的表示分离开来.由于在每一步的构造过程中可以映入不同参数,所以步骤相同但是最后的对象却不一样.也就 ...

  9. 设计模式之Builder模式

    一.感性认识 二.Builder模式 1.定义 一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示.即构建过程相同,但是子部件却不相同. 2.结构说明 Builder: 创建者接口 ...

随机推荐

  1. 使用cxf开发webservice应用时抛出异常

    在使用cxf开发webservice应用时,报出了类似下面的错误 JAXB: [javax.xml.bind.UnmarshalException: unexpected element (uri:& ...

  2. leveldb - 并发写入处理

    在并发写入的时候,leveldb巧妙地利用一个时间窗口做batch写入,这部分代码值得一读: Status DBImpl::Write(const WriteOptions& options, ...

  3. [CoreOS 转载] CoreOS实践指南(五):分布式数据存储Etcd(上)

    转载:http://www.csdn.net/article/2015-01-22/2823659 摘要:在“漫步云端:CoreOS实践指南”系列的前几篇,分别介绍了如何架设CoreOS集群,系统服务 ...

  4. EF 5.0 帮助类

    EF 5.0 帮助类 加入命名空间: using System; using System.Data; using System.Data.Entity; using System.Data.Enti ...

  5. [知识库分享系列] 二、.NET(ASP.NET)

    最近时间又有了新的想法,当我用新的眼光在整理一些很老的知识库时,发现很多东西都已经过时,或者是很基础很零碎的知识点.如果分享出去大家不看倒好,更担心的是会误人子弟,但为了保证此系列的完整,还是选择分享 ...

  6. iOS开发——高级技术精选&底层开发之越狱开发第二篇

    底层开发之越狱开发第二篇 今天项目中要用到检查iPhone是否越狱的方法. Umeng统计的Mobclick.h里面已经包含了越狱检测的代码,可以直接使用 /*方法名: * isJailbroken ...

  7. Jenkins xcodebuild There are no schemes in workspace

    Manage Schemes... 勾选 Shared 参考:http://stackoverflow.com/questions/14368938/xcodebuild-says-does-not- ...

  8. Openvswitch原理与代码分析(1):总体架构

      一.Opevswitch总体架构   Openvswitch的架构网上有如下的图表示:       每个模块都有不同的功能 ovs-vswitchd 为主要模块,实现交换机的守护进程daemon ...

  9. git 基本配置及使用

    GIT是个很方便的开发伴侣,这里 随笔记录下GIT工具的基本使用,也希望能帮到别人更快速的使用GIT. 一,安装软件   toroise是最常用也最习惯的工具了,已经是有支持GIT了. 二,生成密钥文 ...

  10. css3彩色进度条

    <html>    <head>        <title>progress</title>        <script type=" ...