Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1488|回复: 0

java设计模式之建造者模式

  [复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2011-6-7 22:51:31 | 显示全部楼层 |阅读模式

    l         Builder(抽象建造者角色):给出一个抽象接口,以规范产品对象的各个组成成分的建造。一般而言,有多少个组成部分就有多少个建造方法。
    l         BuilderImplx(具体建造者角色):担任这个角色的是与应用程序紧密相关的一些类,它们在应用程序的调用下创建产品的实例。这个角色完成的任务包括:实现抽象建造者Builder所声明的接口,给出一步一步地完成创建产品实例的操作。在建造过程完成后,提供产品的实例
    l         Director(导演着角色):担任这个角色的类调用具体建造者角色以创建产品对象。导演者角色并没有产品类的具体知识,它只是指导特定的具体创建者对象进行创建的过程。
    l         产品角色:产品便是建造过程中的复杂对象。一般来说,一个系统会有多个产品类,而且这些产品类并不一定有共同的接口。一般来说,每一个产品类都有一个相应的具体构造者类。

    代码 1 Builder.java
    package com.model.BuilderFactory;
    import java.util.ArrayList;
    import java.util.List;
    /**
    *抽象创建者
    */
    abstract public class Builder {
        /*
         * 商品的列表
         */
        private List productList;
        public List getProductList() {
           return productList;
        }
        public void setProductList(List productList) {
           this.productList = productList;
        }
       
        /*
         * 初始化,生成新的产品列表
         */
        public void init(){
           productList = new ArrayList();
        }
       
        /*
         * 以下方法为创建商品部分的方法
         * 注意此处不声明为抽象方法的好处是:
         * 如果具体子类没有某个创建方法,则会自动调用父类的空方法
         * 而抽象方法则强制子类实现,造成编程上的冗余。
         */
        public void createFoodA(){
           //空方法
        }
        public void createFoodB(){
           //空方法
        }
        public void createDrink(){
           //空方法
        }
        public void createAddition(){
           //空方法
        }
    }

    代码 2 BuilderImplA.java
    package com.model.BuilderFactory;
    /*
    * 儿童套餐
    */
    public class BuilderImplA extends Builder {
        /*
         * 创建主食
         */
        public void createFoodA(){
           getProductList().add("麦香鱼汉堡");
        }
       
        /*
         * 创建辅食
         */
        public void createFoodB(){
           getProductList().add("小薯条");
        }
       
        /*
         * 创建饮料
         */
        public void createDrink(){
           getProductList().add("奶昔");
        }
       
        /*
         * 创建附加物
         */
        public void createAddition(){
           getProductList().add("喜洋洋玩具");
        }
    }

    代码 3 BuilderImplB.java
    package com.model.BuilderFactory;
    /*
    * 成人套餐
    */
    public class BuilderImplB extends Builder {
        /*
         * 创建主食
         */
        public void createFoodA(){
           getProductList().add("巨无霸汉堡");
        }
       
        /*
         * 创建辅食
         */
        public void createFoodB(){
           getProductList().add("大薯条");
        }
       
        /*
         * 创建饮料
         */
        public void createDrink(){
           getProductList().add("大杯可乐");
        }
       
        /**
         * 没有附加物,所以没有定义createAddition方法
         * 当调用此方法时,会使用父类的方法
         */
    }

    代码 4 Director.java
    package com.model.BuilderFactory;
    import java.util.List;
    /*
    * 抽象导演类
    */
    public abstract class Director {
        /*
         * 聚合的一个具体创建对象
         */
        private Builder builder;
        public Builder getBuilder() {
           return builder;
        }
        public void setBuilder(Builder builder) {
           this.builder = builder;
        }
       
        /*
         * 构造方法
         * 传入具体的创建对象
         */
        public Director(Builder builder){
           super();
           this.builder = builder;
        }
       
        /*
         * 构建产品
         */
        public abstract List construct();
    }
    回复

    使用道具 举报

    该用户从未签到

    发表于 2011-9-2 19:11:45 | 显示全部楼层
    很好,很强大哦。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2011-9-20 19:46:39 | 显示全部楼层
    谢谢楼主整理啊啊。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-6-17 14:33 , Processed in 0.400251 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表