快餐业务模式分析:设计模式-快餐简解-【建造者模式】来源: 发布时间:星期四, 2008年12月18日 浏览:2次 评论:0
【建造者模式应用场景举例】
比如在玩“极品飞车”这款游戏那么每关地图会千变万化简单来说地图会有晴天和阴天的分那么创建地图时就要根据晴天或者阴天来对地图上场景比如:天空树房子和路面进行渲染这个过程是个固定每创建个新地图都要执行这几个渲染这是针对高级配置电脑来说
现在拥有低配置电脑人不在少数那么他们就不能玩游戏了吗?完全可以!只要将地图中占用资源比较高渲染去掉就可以比如带反射光影树这时候需要创建区别地图但地图创建过程却是固定建造者模式完全可以应对这样情况 【建造者模式解释】 类型:创建模式 将个复杂对象构建和它表示分离使得同样构建过程可以创建区别表示 【建造者模式UML图】 【建造者模式-JAVA代码实现】 新建地图接口: package map_package; public erface map_erface { public void create_weather; public void create_house; public void create_tree; public void create_way; } 新建晴天地图类: package map_package; public map_sun implements map_erface { public void create_weather { .out.prln("晴天"); } public void create_house { .out.prln("房了上玻璃发亮"); } public void create_tree { .out.prln("树颜色是浅绿色"); } public void create_way { .out.prln("路面有些干燥"); } } 新建阴天地图类: package map_package; public map_cloudy implements map_erface{ public void create_weather { .out.prln("阴天"); } public void create_house { .out.prln("房了上玻璃发暗"); } public void create_tree { .out.prln("树颜色是深绿色"); } public void create_way { .out.prln("路面有些潮湿"); } } 新建高画质builder建造者类: package map_build; import map_package.map_erface; public map_build_adv { private map_erface map_erface_ref; public map_build_adv(map_erface map_erface_ref) { super; this.map_erface_ref = map_erface_ref; } public void create_map { .out.prln("创建个高画质地图"); // 创建顺序很重要 从天空往路面创建 map_erface_ref.create_weather; map_erface_ref.create_house; map_erface_ref.create_tree; map_erface_ref.create_way; } } 新建低画质builder建造者类: package map_build; import map_package.map_erface; public map_build_low { private map_erface map_erface_ref; public map_build_low(map_erface map_erface_ref) { super; this.map_erface_ref = map_erface_ref; } public void create_map { .out.prln("创建个低画质地图"); // 创建顺序很重要 从天空往路面创建 map_erface_ref.create_weather; map_erface_ref.create_house; // map_erface_ref.create_tree;将创建树过程去掉 map_erface_ref.create_way; } } 新建客户端运行类: package run_; import map_build.map_build_adv; import map_build.map_build_low; import map_package.map_cloudy; import map_package.map_sun; public run_ { public void (String args) { map_cloudy map_cloudy = map_cloudy; map_build_adv map_build_adv = map_build_adv(map_cloudy); map_build_adv.create_map; .out.prln; map_sun map_sun = map_sun; map_build_low map_build_low = map_build_low(map_sun); map_build_low.create_map; } } 运行结果如下: 创建个高画质地图 阴天 房了上玻璃发暗 树颜色是深绿色 路面有些潮湿 创建个低画质地图 晴天 房了上玻璃发亮 路面有些干燥 从中可以看到建造者模式将不变创建过程进行封装创建过程和分法进行分离这样内部创建过程就和表示层代码进行分开有利于创建过程功能上修改另外可以发现代码设计和功能有些类似于facade外观模式区别在于建造者模式目在于以相同构建过程通过区别建造者得到区别结果而外观模式并不需要区别建造者也不希望得到区别结果只是简单将几个接口合并成高级个接口不影响原有结果目是使变得更加容易 本中有2个建造者:高画者建造者和低画质建造者它们都封装了创建地图过程这个过程很固定但通过区别建造者类可以返回不样式地图建造者规定了对象创建过程比如高画质建造者创建过程为: map_erface_ref.create_weather; map_erface_ref.create_house; map_erface_ref.create_tree; map_erface_ref.create_way; 必须得执行4个思路方法才可以创建个高画质地图如果不使用建造者模式直接map类create_xxxx思路方法如果create_xxxx思路方法有几十个那么很有可能就把其中某些思路方法忘记而影响最终地图效果了所以我们要使用建造者模式来规定地图创建过程这就是个“行为守则” 【建造者模式-MyEclipse6项目JAVA代码实现】 建造者模式builder举例代码:点击 0
相关文章读者评论
发表评论 |