java游戏服务器 建造者模式

Wesley13
• 阅读 279

java游戏服务器 建造者模式

这里的具体的建造者ConcreteBuilder可以多个

这里我们以建造汽车为例:

假设汽车需要:方向盘、汽车壳、还有四个轮子  ---------这三样才能跑起来

如果你因为粗心漏了其中的某个建造过程(例如:忘了装方向盘),那么汽车就跑不起来。

有什么方法可以避免粗心,漏了其中的某个过程?

代码如下:

1.Builder类 为 AbstractBuilderCar

** * * 抽象建造汽车父类 * @author lizhibiao * @date 2019/1/16 21:34 */public abstract class AbstractBuilderCar{    /**     * 抽象的----建造方向盘方法     */    public abstract void buildSteeringWheel();    /**     * 抽象的----安上汽车壳     */    public abstract void buildShell();    /**     * 抽象的----安上轮子     */    public abstract void buildWheel();    /**     * 获取汽车     * @return 返回汽车类     */    public abstract Car getCar();}

这里最核心的地方是: 

首先 AbstractBuilderCar是一个抽象类

然后 它的方法都是抽象方法,这么做的必要是为了让子类继承时,都必须实现抽象方法,避免粗心,漏掉其中的某个建造过程。(子类是不是抽象类,那么继承抽象父类时,必须实现所有的抽象方法,否则报错)

最后,有一个获取汽车类

2.两个 ConcreteBuilder类(小黄车和小蓝车),继承Builder

/** * 小黄车 * @author lizhibiao * @date 2019/1/16 21:43 */public class YellowCar extends AbstractBuilderCar{    private Car car = new Car();    @Override    public void buildSteeringWheel()    {        car.add("1.装上方向盘");    }    @Override    public void buildShell()    {        car.add("2.装上黄色的车壳");    }    @Override    public void buildWheel()    {        car.add("3.最后安上四个轮子");    }    @Override    public Car getCar()    {        return car;    }}

/** * 小蓝车 * @author lizhibiao * @date 2019/1/16 21:46 */public class BlueCar extends AbstractBuilderCar{    private Car car = new Car();    @Override    public void buildSteeringWheel()    {        car.add("1.装上方向盘");    }    @Override    public void buildShell()    {        car.add("2.装上蓝色的车壳");    }    @Override    public void buildWheel()    {        car.add("3.最后安上四个轮子");    }    @Override    public Car getCar()    {        return car;    }}

3.Car类

/** * @author lizhibiao * @date 2019/1/16 21:52 */public class Car{    /**     * 建造步骤list     */    private List<String> list = new ArrayList<>();    /**     * 添加汽车建造步骤     */    public void add(String steps)    {        list.add(steps);    }    /**     * 打印汽车     */    public void printCar()    {        for (String stepInfo : list)        {            System.out.println(stepInfo);        }    }}

4.指挥者类

/** * 指挥者类 * @author lizhibiao * @date 2019/1/16 21:49 */public class Director{    /**     * 建造过程     * @param builderCar 传入具体建造者,例如:小黄、小蓝     */    public void build(AbstractBuilderCar builderCar)    {        builderCar.buildSteeringWheel();        builderCar.buildShell();        builderCar.buildWheel();    }}

5.测试类

/** * 测试类 * @author lizhibiao * @date 2019/1/17 15:05 */public class Main{    public static void main(String[] args)    {        //指挥者        Director director = new Director();        //new一个小黄车,多态,返回的是抽象父类        AbstractBuilderCar buildYellowCar = new YellowCar();        //按顺序建造汽车        director.build(buildYellowCar);        //获取小黄车        Car yellowCar = buildYellowCar.getCar();        //打印建造过程        yellowCar.printCar();        System.out.println("=======================");        System.out.println("=======================");        //建造小蓝车        AbstractBuilderCar buildBlueCar = new BlueCar();        director.build(buildBlueCar);        Car blueCar = buildBlueCar.getCar();        blueCar.printCar();    }}

输出结果:

1.装上方向盘

2.装上黄色的车壳

3.最后安上四个轮子

=======================

=======================

1.装上方向盘

2.装上蓝色的车壳

3.最后安上四个轮子

点赞
收藏
评论区
推荐文章
Stella981 Stella981
2年前
Python 设计模式之建造者模式 Builder Pattern
 引入建造者模式肯德基的菜单上有薯条,鸡腿,鸡翅,鸡米花,可乐,橙汁,火腿汉堡,至尊虾汉堡,牛肉汉堡,鸡肉卷等这些单品,也有很多套餐。比如套餐1:鸡翅,至尊虾汉堡,可乐,薯条套餐2:鸡腿,火腿汉堡,橙汁,薯条套餐3:。。。。。全家桶:。。。。。这种有各种各样的单品一步一步生成各种套餐,这种过程称的
Wesley13 Wesley13
2年前
Java描述设计模式(04):抽象工厂模式
一、抽象工厂模式1、生活场景汽车生产根据用户选择的汽车类型,指定不同的工厂进行生产,选择红旗轿车,就要使用中国工厂,选择奥迪轿车,就要使用德国工厂。2、抽象工厂模式1.抽象工厂模式:定义了一个interface用于创建相关对象或相互依赖的对象,而无需指明具体的类;2.抽象工厂模式可以
Wesley13 Wesley13
2年前
Java进阶篇设计模式之三
前言在上一篇(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fxuwujing%2Fp%2F9363142.html)中我们学习了工厂模式,介绍了简单工厂模式、工厂方法和抽象工厂模式。本篇则介绍设计模式中属于创建型模式的建造者模式和原型模式。
Wesley13 Wesley13
2年前
Java中23种设计模式详解
Java中23种设计模式1\.设计模式31.1创建型模式41.1.1工厂方法41.1.2抽象工厂61.1.3建造者模式101.1.4单态模式131.1.5原型模式151.2结构型模式171.2.1适配器模式171.2.2桥接模式191.2.3组合
Wesley13 Wesley13
2年前
Java Design Patterns
java的设计模式大体上分为三大类:创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模
Wesley13 Wesley13
2年前
Java描述设计模式(06):建造者模式
一、生活场景基于建造者模式,描述软件开发的流程。1、代码实现/基于建造者模式描述软件开发/publicclassC01_InScene{publicstaticvoidmain(Stringargs){B
Wesley13 Wesley13
2年前
JavaWeb之动态代理解决request请求编码问题
动态代理解决编码问题1.设计模式出现原因:软件开发过程中,遇到相似问题,将问题的解决方法抽取模型(套路)常见设计模式:单例,工厂,适配器,装饰者,动态代理。2.装饰者模式简单介绍谷歌汽车开发场景1.Java定义了汽车开发约定interfaceICar{s
Wesley13 Wesley13
2年前
23种设计模式(面向对象语言)
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。创建型模式是用来创建对象的模式,抽象了实例化的过程,帮助一个系统独立于其他关联对象的创建、组合和表示方式。所有的创建型模式都有两个主要功能:  1.将系统所使用的具体类的信息封装起来  2.隐藏
这些新科技离你我不远了
博世是全球最大的汽车零部件和技术供应商,所以从他们每年定期的创新体验日,我们其实可以看到未来汽车技术发展的蓝图,甚至是很多新的技术和产品!今年的活动有什么新内容?四个方面:集成性、灵活性和兼容性在江苏连云港博世(东海)汽车检测技术中心举办的汽车与智能交通技
京东云开发者 京东云开发者
3个月前
幻兽帕鲁来啦!京东云召唤你一键开服,快来私服联机
一、前言《幻兽帕鲁》是一款备受瞩目的开放世界生存建造游戏,近期火爆全网。玩家可以在游戏世界中收集神奇的生物“帕鲁”,并利用它们进行战斗、建造、农耕、工业生产等各种活动。《幻兽帕鲁》官方推荐搭建专有服务器,话不多说直接从0到1搭建起来!•创建主机:在京东云上