java游戏服务器 建造者模式

**
*
* 抽象建造汽车父类
* @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();
}
/**
* 小黄车
* @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;
}
}
/**
* @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);
}
}
}
/**
* 指挥者类
* @author lizhibiao
* @date 2019/1/16 21:49
*/
public class Director
{
/**
* 建造过程
* @param builderCar 传入具体建造者,例如:小黄、小蓝
*/
public void build(AbstractBuilderCar builderCar)
{
builderCar.buildSteeringWheel();
builderCar.buildShell();
builderCar.buildWheel();
}
}
/**
* 测试类
* @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();
}
}
java游戏服务器 建造者模式的更多相关文章
- 折腾Java设计模式之建造者模式
博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...
- Java 帝国之建造者模式
Java 帝国之建造者模式 原创: 王钦誉 码农翻身 今天 本文来自王钦誉的投稿,老刘做了较大修改. 原文地址: https://xiaoqinyu0000.github.io/2018/06/11/ ...
- Java 设计模式之建造者模式(四)
原文地址:Java 设计模式之建造者模式(四) 博客地址:http://www.extlight.com 一.前言 今天继续介绍 Java 设计模式中的创建型模式--建造者模式.上篇设计模式的主题为 ...
- java设计模式3——建造者模式
java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...
- Java游戏服务器成长之路——感悟篇
又是一个美好的周末啊,现在一到周末,早上就起得晚,下午困了又会睡一两个小时,上班的时候,早上起来喝一杯咖啡,然后就能高效的工作一整天,然而到了周末人就懒散了,哈哈. 最近刚跳槽,到新公司已经干了有两周 ...
- java设计模式之四建造者模式(Builder)
工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到 ...
- Java设计模式之三 ----- 建造者模式和原型模式
前言 在上一篇中我们学习了工厂模式,介绍了简单工厂模式.工厂方法和抽象工厂模式.本篇则介绍设计模式中属于创建型模式的建造者模式和原型模式. 建造者模式 简介 建造者模式是属于创建型模式.建造者模式使用 ...
- Java游戏服务器搭建
一.前言 此游戏服务器架构是一个单服的形式,也就是说所有游戏逻辑在一个工程里,没有区分登陆服务器.战斗服务器.世界服务器等.此架构已成功应用在了多款页游服务器 .在此框架中没有实现相关业务逻辑,只有简 ...
- java设计模式3.建造者模式、原型模式
建造者模式 一个产品常有不同的组成部分作为产品的零件,有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用,有些时候,一个对象的一些性质必须按照某个顺序赋值才 ...
随机推荐
- Python学习 第一天(一)初始python
1.python的前世今生 想要充分的了解一个人,无外乎首先充分了解他的过去和现在:咱们学习语言也是一样的套路 1.1 python的历史 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈp ...
- UVa136 Ugly Numbers(优先队列priority_queue)
Ugly Numbers 题目 Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, 2, ...
- 远程文件传输工具sftp、scp、rsync
一.scp 格式 scp [options] [user@]host : /sourcefile /destpathscp [options] /sourcefile [user@]host:/des ...
- mongodb多条件分页查询的三种方法(转)
一.使用limit和skip进行分页查询 public List<User> pageList(int pageNum ,int pageSize){ List<User> u ...
- 01- ES6、jquery源码、node、webpack
1.课程介绍 小马哥blog:https://www.cnblogs.com/majj/ 前端学习路径:https://www.processon.com/view/link/5d3a5947e4b0 ...
- 34.第一次只出现一次的字符(python)
题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 两次遍历,第一次存放字 ...
- 【原创】谈一个数学教育专业的IT职业生涯
2003年,有许多值得记住,第一个是非典,第二个就是高考数学卷.直到今年2019年,时隔16年,有人说2019年高考数学卷难度堪比2003年,但还没难到2003年的程度. 我,2003年高考,进考场先 ...
- CF1155D Beautiful Array 贪心,dp
CF115DBeautiful Array 题目大意:给一个有n个元素的a数组,可以选择其中一个区间的所有数都乘上x,也可以不选,求最大子序列和. 如果没有前面的操作,就是只求最大子序列和,我们都知道 ...
- 洛谷比赛 U4858 sum
U4858 sum 题目提供者666sb666 最新讨论 题目背景 定义一个序列的价值为序列中相邻元素差的绝对值之和. 如序列{2,1,3}的价值为|2-1|+|1-3|=3,而序列{4}的价值为0. ...
- python数据分析-数据导入
1.导入CSV格式数据 import pandas data = pandas.read_csv("C:\\Users\\zhaosai\\Desktop\\进击的DBA\\谁说菜鸟不会数据 ...