知识大全 设计模式-快餐简解-建造者模式

Posted

篇首语:吃的苦中苦,方为人上人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 设计模式-快餐简解-建造者模式相关的知识,希望对你有一定的参考价值。

  【建造者模式应用场景举例

  比如在玩 极品飞车 这款游戏 那么每一关的地图会千变万化 简单的来说 地图会有晴天和阴天之分 那么创建地图时就要根据晴天或者阴天来对地图上的场景 比如 天空 树 房子 和路面进行渲染 这个过程是一个固定的 每创建一个新地图都要执行这几个渲染 这是针对高级配置的电脑来说的

  现在拥有低配置电脑的人不在少数 那么他们就不能玩游戏了吗?完全可以!只要将地图中占用资源比较高的渲染去掉就可以 比如带反射光影的树 这时候需要创建不同的地图 但地图的创建过程却是固定的 建造者模式完全可以应对这样的情况

  【建造者模式解释

  类型 创建模式

  将一个复杂对象的构建与它的表示分离 使得同样的构建过程可以创建不同的表示

  【建造者模式UML图

  

  【建造者模式 JAVA代码实现

  新建地图接口

   package map_package;public interface map_interface     public void create_weather();    public void create_house();    public void create_tree();    public void create_way();

  新建晴天地图类

   package map_package;public class map_sun implements map_interface     public void create_weather()         System out println( 晴天 );        public void create_house()         System out println( 房了上玻璃发亮 );        public void create_tree()         System out println( 树的颜色是浅绿色 );        public void create_way()         System out println( 路面有些干燥 );    

  新建阴天地图类

   package map_package;public class map_cloudy implements map_interface    public void create_weather()         System out println( 阴天 );        public void create_house()         System out println( 房了上玻璃发暗 );        public void create_tree()         System out println( 树的颜色是深绿色 );        public void create_way()         System out println( 路面有些潮湿 );    

  新建高画质builder建造者类

   package map_build;import map_package map_interface;public class map_build_adv     private map_interface map_interface_ref;    public map_build_adv(map_interface map_interface_ref)         super();        this map_interface_ref = map_interface_ref;        public void create_map()         System out println( 创建一个高画质的地图 );        // 创建的顺序很重要 从天空往路面创建        map_interface_ref create_weather();        map_interface_ref create_house();        map_interface_ref create_tree();        map_interface_ref create_way();    

  新建低画质builder建造者类

   package map_build;import map_package map_interface;public class map_build_low     private map_interface map_interface_ref;    public map_build_low(map_interface map_interface_ref)         super();        this map_interface_ref = map_interface_ref;        public void create_map()         System out println( 创建一个低画质的地图 );        // 创建的顺序很重要 从天空往路面创建        map_interface_ref create_weather();        map_interface_ref create_house();        // map_interface_ref create_tree();将创建树的过程去掉        map_interface_ref create_way();    

  新建客户端运行类

   package run_main;import map_build map_build_adv;import map_build map_build_low;import map_package map_cloudy;import map_package map_sun;public class run_main     public static void main(String[] args)         map_cloudy map_cloudy = new map_cloudy();        map_build_adv map_build_adv = new map_build_adv(map_cloudy);        map_build_adv create_map();        System out println();        map_sun map_sun = new map_sun();        map_build_low map_build_low = new map_build_low(map_sun);        map_build_low create_map();    

  程序运行结果如下

   创建一个高画质的地图阴天房了上玻璃发暗树的颜色是深绿色路面有些潮湿创建一个低画质的地图晴天房了上玻璃发亮路面有些干燥

  从程序中可以看到 建造者模式将不变的创建过程进行封装 创建的过程与main分法进行分离 这样内部的创建过程就和表示层的代码进行分开 有利于创建过程功能上的修改 另外可以发现 代码的设计和功能有些类似于facade外观模式 区别在于 建造者模式目的在于以相同的构建过程通过不同的建造者得到不同的结果 而外观模式并不需要不同的建造者 也不希望得到不同的结果 只是简单的将几个接口合并成高级的一个接口 不影响原有的结果 目的是使调用变得更加容易

  本程序中有 个建造者 高画者建造者和低画质建造者 它们都封装了创建地图的过程 这个过程很固定 但通过不同的建造者类可以返回不样式的地图 建造者规定了对象创建的过程 比如高画质的建造者的创建过程为

   map_interface_ref create_weather();map_interface_ref create_house();map_interface_ref create_tree();map_interface_ref create_way();

  必须得执行 个方法才可以创建一个高画质的地图 如果不使用建造者模式 直接调用map类的create_xxxx方法 如果create_xxxx方法有几十个 那么很有可能就把其中的某些方法忘记调用而影响最终地图的效果了 所以我们要使用建造者模式来规定地图创建的过程 这就是一个 行为守则

  【建造者模式 MyEclipse 项目JAVA代码实现

cha138/Article/program/Java/gj/201311/27540

相关参考

知识大全 设计模式-快餐简解-观察者模式

  【观察者模式应用场景举例】  比如在玩极品飞车这款游戏每一个车手到达终点的时候都会在其它车手的屏幕上显示某某人以多少时间到达终点的提示其实这就是一个典型的观察者模式的应用观察者模式即是典型的双向一

知识大全 设计模式-快餐简解-模板方法模式

  【模板方法模式应用场景举例】  比如在玩极品飞车这款游戏每辆车都有显示速度的仪表盘但有可能A车显示的是蓝色的仪表盘B车显示的是红色的仪表盘分析中可以发现他们都有车速度的值但显示的方式不太一样其实模

知识大全 老生常谈:建造者模式

  设计:  人类通过劳动改造世界创造文明创造物质财富和精神财富而最基础最主要的创造活动是造物设计便是造物活动进行预先的计划可以把任何造物活动的计划技术和计划过程理解为设计意指有目标和计划的创作行为&

知识大全 深入浅出基于Java的建造设计模式

深入浅出基于Java的建造设计模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一引子  前几

知识大全 老生常谈:解释器模式

    解释器模式的目的:  如果某一类问题一再的发生此时比较好的做法是将此类问题的各个实例表达为一个简单语言中的语句这样可以建造一个解释器通过解释这些语句达到

知识大全 Java程序性能优化-装饰者模式(1)

Java程序性能优化-装饰者模式(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-装饰者模式(2)

Java程序性能优化-装饰者模式(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-装饰者模式(3)

Java程序性能优化-装饰者模式(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-装饰者模式(4)

Java程序性能优化-装饰者模式(4)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 请问团购网的运作模式是什么样的

请问团购网的运作模式是什么样的?盈利模式又在哪?我做团购玩去哪发布商品的信息?和商家怎么算钱?等等团购流程团购分开团和跟团两种,开团者称为团长,是组织团购的一方,跟团者称为团员,是参加团购的一方。除团