• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Java设计模式中建造者模式和原型模式的介绍(代码示例)

java 搞代码 4年前 (2022-01-09) 16次浏览 已收录 0个评论
文章目录[隐藏]

本篇文章给大家带来的内容是关于Java设计模式中建造者模式和原型模式的介绍(代码示例) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

前言

在上一篇中我们学习

本文来源gao!%daima.com搞$代*!码网1

了工厂模式,介绍了简单工厂模式、工厂方法和抽象工厂模式。本篇则介绍设计模式中属于创建型模式的建造者模式和原型模式。

建造者模式

简介

建造者模式是属于创建型模式。建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
简单的来说就是将一个复杂的东西抽离出来,对外提供一个简单的调用,可以在同样的构建过程创建不同的表示。和工厂模式很相似,不过相比而言更加注重组件的装配。

这里用一个示例来进行说明。
我们一天吃的食物有这些,煎饼、盒饭、拉面、豆浆、牛奶和果汁。分为三餐、早餐、午餐和晚餐,餐点主要包含吃的(俗称饭)和喝的(豆浆,果汁之类的),那么我们可以把煎饼和豆浆作为早餐,盒饭和果汁作为午餐,这样我们可以清楚的知道要吃早餐和午餐包含什么食物。

首先我们定义一个食物类,有两个属性,吃的和喝的。

class Meal{    private String food;    private String drinks;        public String getFood() {        return food;    }    public void setFood(String food) {        this.food = food;    }        public String getDrinks() {        return drinks;    }    public void setDrinks(String drinks) {        this.drinks = drinks;    }}

定义了食物时候,我们在定义一个食物的标准接口,一份食物包含什么,其实也就是吃的和喝的。

interface IBuilderFood{    void buildFood();    void buildDrinks();    Meal createMeal();}

食物接口定义一个吃的和一个喝的组件,然后通过createMeal()方法返回我们需要的食物。
那么现在我们便可以定义一份早餐和午餐。
代码示例:

class Breakfast implements IBuilderFood{    Meal meal;    public Breakfast(){        meal=new Meal();    }        @Override    public void buildFood() {        meal.setFood("煎饼");    }    @Override    public void buildDrinks() {        meal.setDrinks("豆浆");       }        @Override    public Meal createMeal() {        return meal;    }}class Lunch implements IBuilderFood{    Meal meal;    public Lunch(){        meal=new Meal();    }        @Override    public void buildFood() {        meal.setFood("盒饭");    }    @Override    public void buildDrinks() {        meal.setDrinks("果汁");       }        @Override    public Meal createMeal() {        return meal;    }}

定义完之后,建造早餐和午餐的的过程已经完毕了。但是这并不是建造者模式,它有个核心的Director(导演者),它用来创建复杂对象的部分,对该部分进行完整的创建或者按照一定的规则进行创建。那么这里我们可以创建一个Director,用来创建一份餐点。至于创建的是什么餐点,它不用知道,这一点由调用者来进行决定。

这里我们就可以定义一个饭店,可以创建一份餐点,创建什么餐点有顾客决定。
代码示例:

class FoodStore{    public Meal createBreakfast(IBuilderFood bf){        bf.buildDrinks();        bf.buildFood();        return bf.createMeal();    }}

创建完成这个Director之后,我们再来进行调用测试。

代码示例:

public class BuilderTest {    public static void main(String[] args) {        FoodStore foodStore=new FoodStore();        Meal meal=foodStore.createBreakfast(new Breakfast());        Meal meal2=foodStore.createBreakfast(new Lunch());        System.out.println("小明早上吃的是:"+meal.getFood()+",喝的饮料是:"+meal.getDrinks());        System.out.println("小明中午吃的是:"+meal2.getFood()+",喝的饮料是:"+meal2.getDrinks());     }}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java设计模式中建造者模式和原型模式的介绍(代码示例)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址