• 建造者模式(Builder)举例介绍
    时间:2012-04-12?? 作者:佚名?? 出处:互联网

    Builder模式的定义是:将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 首先它意图是要构建一个复杂的对像,而这个复杂的对像往往需要由好几个子对像或分步聚来完成最终的这个对象的构建,而这个复杂对象的子对像经常需要不断的变化,但它的构建过程是相对是稳定的。

    比如:一部汽车:它由发动机,轮胎、底盘,车身组成。而此时无论我最终构建的汽车是大众牌的汽车还是奥迪汽车,它的构建过程是不会变的,都是由发动机,轮胎、底盘,车身组成。至于大众牌的汽车还是奥迪汽车它们各自采用的是什么样的发动机,轮胎、地盘这些肯定是不一样的,也就是经常变化的。

    通过对上面的分析,我们能够得出其下代码:


    ?public abstract class BuilderCar
    ???? {
    ???????? public abstract void Engine();//发动机
    ???????? public abstract void Chassis();//底盘
    ???????? public abstract void Carbody();//车身
    ???????? public abstract void Tire();//轮胎
    ?
    ?
    ???????? public abstract Car GetCar();//最终构建出来的汽车
    ??????
    ???? }
    ?
    ???? public abstract class Car {}
    ?
    ????
    ?
    ?接下来就是我们的逻辑代码了
    ?
    1 public class ClentBLL
    ?2???? {
    ?3???????? private BuilderCar buildercar=null;
    ?4???????? public ClentBLL(BuilderCar buildercar)
    ?5???????? {
    ?6???????????? this.buildercar = buildercar;
    ?7???????? }
    ?8
    ?9???????? public Car BuilderCar()
    10???????? {
    11???????????? buildercar.Carbody();//车身
    12???????????? buildercar.Chassis();//底盘
    13???????????? buildercar.Engine();//发动机
    14???????????? buildercar.Tire();//轮胎
    15
    16???????????? return buildercar.GetCar();
    17???????? }
    ?现在我们来构建一台奥迪车。
    ?1???? //构建一台奥迪汽车
    ?2???? public class OOOOCar:Car
    ?3???? {
    ?4????????
    ?5???? }
    ?6
    ?7
    ?8???? public class OOOOBuilderCar : BuilderCar
    ?9???? {
    10???????? public? void Engine(){
    11???????????? //发动机
    12???????????? //在这你随便弄什么样的发动机都可以,。
    13???????? }
    14???????? public? void Chassis(){}
    15???????? public void Carbody() { }
    16???????? public? void Tire();
    17
    18
    19???????? public? Car GetCar() {
    20???????????? //这块也许会用到上面这些部件方法
    21???????????????? //做一些其它的事情。
    22
    23????????? return??? new OOOOCar();//生成最终的汽车
    24????????
    25???????? }
    ?调用代码:
    1? public class APP
    2???? {
    3???????? public static void Main()
    4???????? {
    5???????????? ClentBLL cbll = new ClentBLL(new OOOOBuilderCar());//如果想换成其它品牌的车子,只需改动这块
    6???????? }
    7???? }
    ?其它不难发现Builder模式与Abstract Factory模式在代码上有一定的相似性,但是它们解决的问题还有一定的差别的。
    ? Builder模式主要解决"复杂对象各个部分"的频繁需求变动。
    ? Abstract Factory模式解决“系列对象”的需求变化。
    它们相同的地方都是:抽象体内的对象或过程是稳定不变的,至于在项目中使用哪一个,这就要具体分析了。

    网友留言/评论

    我要留言/评论

    相关文章

    有关Android Activity生命周期详解:生命周期,对于初学者来讲可能比较深奥。在各种面试中,常常会被问到xxx的生命周期是什么样子的,比如:Servlet的生命周期,Spring Bean的生命周期。今天就详细的讲解一下Android Activity 的生命周期。文章主要涉及到如下几个部分:生命周期图,测试代码,结果分析。
    使用Java进行冒泡排序(冒泡排序示例):冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
    Java面试题中关于HashMap的小小总结:面试过程中往往会被问关于HashMap的问题,比如:说说Hashpmap的原理,HashMap怎样保证key的唯一性。下面小编给大家简单介绍一下关于HashMap的小小总结。
    JAVA正则表达式:Pattern类与Matcher类详解:java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式。 Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。
    线上解决Resin服务响应过慢的几个方法:最近Web服务访问量过大,由于服务器配置比较差,数量也较少,导致服务响应过慢。为了优化服务和提高响应,下面总结出几条查询Resin问题的方法。
    Java 中 Listener 模式示例:Listener模式在Java中很常见,并且很有用,下面例举一下Java的Listener模式,希望对大家有所帮助。
    Java Annotation手册(详解):在上篇文章《Java Annotation入门》中概要性的介绍了Annotation的定义、使用,范围涵盖较广,但是深度不够。所以作者在《Java Annotation入门》后,继续整理了Annotation的概念和知识点,与喜欢research的朋友们共享。
    利用 Java 6 javax.script 包直接处理 JSON:以往我们在Java中处理 JSON 数据时,经常会引用到各种 json 的第三方 jar 包。有时很简单的功能,而引用比较臃肿的包,是比较难以容忍的。很高兴我们可以使用Java 6 提供的 javax.script 包来处理。 Java 有了支持其他脚本语言的特性,例如 JavaScript。而 JavaScript 对 JSON 的支持是天生具备的。让我们来看一些实例。
    (DOM解析xml )Android中的XML解析与生成:DOM解析XML文件时,会将XML文件的所有内容以对象树方式存放在内存中,然后允许您使用DOM API遍历XML树、检索所需的数据。使用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单。但是,因为DOM需要将XML文件的所有内容以对象树方式存放在内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小采用DOM是可行的。
    JRockit读书笔记I — Java代码的高效执行:《Oracle JRockit: The Definitive Guide》一书是由Oracle JRockit的两位资深开发人员写的,其中的Marcus Hirt更是JRockit Mission Control的leader,这本书详细的对Oracle JRockit进行了介绍,最突出的特点非常系统化的介绍了一个JVM通常是如何实现的,而JRockit这样一个极为优秀的JVM又是做了哪些优化,为什么做这些优化,这本书对于对JVM感兴趣的同学而言应该是必读的一本书,其实即使对于JVM兴趣不强的同学,里面的优化思路的介绍也是值得学习,本系列的blog主要是总结看这本书得到的一些收获,由于书中知识量巨大,因此得分成多篇blog来总结了。