当前位置: 首页 > news >正文

精品课程网站建设 公司模块化网站建设

精品课程网站建设 公司,模块化网站建设,网络培训的优点包括什么,上海中风险地区清零什么是建造者模式#xff1f; 传说女娲是用泥巴捏出人来的#xff0c;当时捏出的小泥人虽然每个都是两条腿、两只手、一个脑袋的样子#xff0c;但是具体到每个部位#xff0c;却有有所不同#xff1a;有的小泥人手长一点#xff0c;有的手短一点#xff1b;有的脑袋圆…什么是建造者模式 传说女娲是用泥巴捏出人来的当时捏出的小泥人虽然每个都是两条腿、两只手、一个脑袋的样子但是具体到每个部位却有有所不同有的小泥人手长一点有的手短一点有的脑袋圆鼓鼓的有的脑袋尖尖的······ 造物者归纳起来其实就一句话女娲造人形态各异。 也就是说当初女娲在造人的时候她的心中是有一副蓝图——即是人型的样子但是在塑造不同部位的时候选择的是不同的“捏制”手法。女娲作为造物者便是建造者模式最好的例子了。 让我们来看看建造者模式的定义 建造者模式生成器模式将一个复杂对象的构建与它的表示分离使得同样的构造器过程可以创建不同的表示。 它的UML类图表示如下 Builder是为创建一个具体产品、具体对象的各个部件指定的抽象接口 放到女娲造人的传说里那就是人型蓝图。ConcreteBuilder则是实现Builder抽象方法的具体建造类它可以看作是更为详细的蓝图指明了高矮胖瘦、男女老幼。 Director则是根据ConcreteBuilder来具体构造产品、对象的它使用了Builder接口 在传说中这就是造物者——女娲。 光靠定义难以理解我们接下来看一个例子吧。 如何使用建造者模式 举个例子 相信大家不少都玩过游戏自然知道游戏的捏脸系统。捏脸系统可以让玩家选择人物的各个部位的大小、形状等等体验一把造物者的感觉。除了玩家的角色里面的NPC也是通过这个捏脸系统生成的造成游戏里的角色形态各异。就像下面这种 今天我就以一建造者模式来实现一个简单的游戏捏脸系统。这个捏脸系统可以设置姓名、选择人物的四肢、头部、服饰、武器、天赋等。 UML类图设计 整个系统的UML类图如下 实现代码 抽象建造类声明建造一个角色所必备的部件。 abstract public class AbstractBuilder {public abstract void BuildHead ();public abstract void BuildBody ();public abstract void BuildArms();public abstract void BuildLegs();public abstract void ChooseGenius();public abstract void ChooseCloth();public abstract void ChooseWeapon();public abstract void SetName(); }由于该抽象类的所有方法都被声明为了抽象方法继承它的子类必须实现所有的抽象方法这就防止了某些部件的缺失。 具体建造类用来选择角色每个部位具体的属性。我们来为这个游戏时间创建几个NPC如下。 弓箭手 public class ArcherBuilder extends AbstractBuilder {Overridepublic void BuildHead() {System.out.println(头部精灵脑袋);}Overridepublic void BuildBody() {System.out.println(躯干精灵身体);}Overridepublic void BuildArms() {System.out.println(手臂精灵手臂);}Overridepublic void BuildLegs() {System.out.println(腿部精灵腿);}Overridepublic void ChooseGenius() {System.out.println(天赋鹰眼急性弯弓);}Overridepublic void ChooseCloth() {System.out.println(服饰初级弓箭手套装);}Overridepublic void ChooseWeapon() {System.out.println(武器新手木弓);}Overridepublic void SetName() {System.out.println(姓名潘德初级射手);} }战神刑天 public class GiantBuilder extends AbstractBuilder {Overridepublic void BuildHead() {System.out.println(头部巨人头);}Overridepublic void BuildBody() {System.out.println(躯干荒古圣体);}Overridepublic void BuildArms() {System.out.println(手臂麒麟臂);}Overridepublic void BuildLegs() {System.out.println(腿部刑天之腿);}Overridepublic void ChooseGenius() {System.out.println(天赋威压力巨不死);}Overridepublic void ChooseCloth() {System.out.println(服饰刑天套);}Overridepublic void ChooseWeapon() {System.out.println(武器刑天斧);}Overridepublic void SetName() {System.out.println(姓名战神刑天);} }j另外邓布利多、骑士长等代码就不贴了请至源码查看。 玩家类用来调用具体的角色类的构造方法实现所有角色的部件按照顺序生成无一缺漏。 public class Player {private AbstractBuilder abstractBuilder;public Player(AbstractBuilder abBuilder) {abstractBuilderabBuilder;}public void CreateCharacter(){System.out.println(创建角色中......);abstractBuilder.BuildHead();abstractBuilder.BuildBody();abstractBuilder.BuildArms();abstractBuilder.BuildLegs();abstractBuilder.ChooseGenius();abstractBuilder.ChooseCloth();abstractBuilder.ChooseWeapon();abstractBuilder.SetName();System.out.println(角色创建完毕);} }jj游戏客户端用于创建对应的NPC角色 public class GameClient {public static void main(String[] args) {ArcherBuilder archerBuilder new ArcherBuilder();KnightBuilder knightBuilder new KnightBuilder();MasterBuilder masterBuilder new MasterBuilder();GiantBuilder giantBuilder new GiantBuilder();ArrayListAbstractBuilder builders new ArrayList();builders.add(archerBuilder);builders.add(knightBuilder);builders.add(masterBuilder);builders.add(giantBuilder);System.out.println(世界角色构造中请稍候......);for (AbstractBuilder builder:builders) {Player player new Player(builder);player.CreateCharacter();System.out.println( );}System.out.println(世界角色构造完毕祝您游戏愉快);} }运行结果 世界角色构造中请稍候...... 创建角色中...... 头部精灵脑袋 躯干精灵身体 手臂精灵手臂 腿部精灵腿 天赋鹰眼急性弯弓 服饰初级弓箭手套装 武器新手木弓 姓名潘德初级射手 角色创建完毕创建角色中...... 头部西方帝国头 躯干骑士躯 手臂百战臂 腿部千夫长之腿 天赋勇猛不惧冲锋 服饰东罗帝国飞羽骑士套 武器高仿战神枪 姓名大骑士长 角色创建完毕创建角色中...... 头部普通人类头 躯干老迈躯 手臂骨瘦臂 腿部不动冥王腿 天赋无量洞察瞬发 服饰大法师袍 武器瓦巴杰克 姓名阿不思·邓布利多 角色创建完毕创建角色中...... 头部巨人头 躯干荒古圣体 手臂麒麟臂 腿部刑天之腿 天赋威压力巨不死 服饰刑天套 武器刑天斧 姓名战神刑天 角色创建完毕世界角色构造完毕祝您游戏愉快总结 应用场景 建造者模式主要是用于创建一些复杂的对象这些对象内部间的构造顺序、构造部件通常是稳定的但是对象内部的具体构建方法常常是变化的。 除了之前说到的女娲造人、游戏捏人的例子生活中的麦当劳、肯德基等流水线式的快餐食品其实也是建造者模式的一个例子每种汉堡的用料、时间都是不同的但是顺序和组成部件确实大同小异比如都的要两片面包、中间加肉等等只不过面包种类不一样肉的种类也可以不一样。 另一个建造者模式的例子可以拿五一假期的安排来说假期时长一共五天但是每一天究竟干什么、去哪、干多久都是可以任意规划和选择的。 优点 封装性强建造代码与表示代码分离由于建造者隐藏了该产品是如何组装的所以外部客户是无法知道其内部实现代码扩展性强若需要改变一个产品的内部表示只需要再定义一个具体的建造者就可以了过程精细化 通过创建者模式可以实现每一个过程都依次无误进行并且每一个过程还可以进一步分为更多的子过程例如捏脸系统的头部还可以细化为五冠、表情等等这可以通过对头部进行另一个建造者模式来实现。 缺点 由于每个角色之间的组件无法复用当建造者类太多代码较为臃肿此时需要结合其他的设计模式进行优化例如组合模式。只适合于最终的实例组成部分相似的情况。 项目地址 https://github.com/white0dew/Design-pattern/tree/master 往期文章 大话设计模式(1)——设计原则与单例模式 大话设计模式(2)——策略模式 参考链接 《大话设计模式》 《Headfist 设计模式》
http://www.pierceye.com/news/125276/

相关文章:

  • 好看的网站页面WordPress知更鸟主题怎样安装
  • 如何查网站是否备案免费建网站代码
  • 曲沃网站开发新注册的公司怎么做网站
  • 企业网站无线端怎么做塑胶科技东莞网站建设
  • 图片发到哪些网站 seo阜沙网站建设
  • 企业开源建站系统大连百度首页优化
  • 通辽做网站有没有智慧软文发稿平台
  • 网站别人做的我自己怎么续费福州网站建站公司
  • 青岛高端网站开发wordpress修改logo地址
  • 做网站实名认证有什么用青岛网站建设运营
  • 大数据分析网站做汽车保养的网站上
  • 网站开发费用一般是多少怎么建设宣传网站
  • 做网站的背景怎么做ps免费模板网站
  • 为什么要建设应急管理网站sketch做网站
  • 做的网站在百度上搜不出来的宁波关键词优化平台
  • 哪里有手机网站建设公司有道网站收录提交入口
  • 赣州网站建设较好的公司贵州网站建设hsyunso
  • 网站建设和管理是教什么科目鹤壁网站建设鹤壁
  • 网站域名和邮箱域名解析国外网站国内做二维码
  • 万万州州微微网站网站建建设设福州建设网站效果图
  • 长安网站建设详细教程鸿科经纬教网店运营推广
  • 微信营销模式有seo短视频网页入口引流推广
  • 做商城网站简单吗长春网站建设服务
  • 工厂弄个网站做外贸如何app开发报价公司
  • 网销网站建设流程如何创建网站挣钱
  • 韶关网站制作手机推广app
  • Linux做视频网站网速均衡网页编辑实践报告
  • 做ppt好的模板下载网站如何查看网站空间商
  • 武义公司网站建设公司如何建设网站首页
  • hdwiki做网站罗湖网站建设联系电话