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

中国建设银行十堰分行网站服装企业网站建设可行性分析

中国建设银行十堰分行网站,服装企业网站建设可行性分析,上海教育网站前置审批,创办一个网站需要多少钱创建型模式 - 建造者模式 (Builder Pattern) 建造者模式是一种创建型设计模式,它将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 需求描述 在游戏开发中,创建一个复杂的游戏角色,角色具有多种属性&…

创建型模式 - 建造者模式 (Builder Pattern)

建造者模式是一种创建型设计模式,它将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。


需求描述
在游戏开发中,创建一个复杂的游戏角色,角色具有多种属性,如姓名、性别、职业、武器等。不同类型的角色这些属性的组合和设置方式可能不同。使用建造者模式可以将角色的创建过程和具体表示分离,方便创建不同类型的角色。

// 产品类:游戏角色
class GameCharacter {private String name;private String gender;private String profession;private String weapon;public void setName(String name) {this.name = name;}public void setGender(String gender) {this.gender = gender;}public void setProfession(String profession) {this.profession = profession;}public void setWeapon(String weapon) {this.weapon = weapon;}@Overridepublic String toString() {return "GameCharacter{" +"name='" + name + '\'' +", gender='" + gender + '\'' +", profession='" + profession + '\'' +", weapon='" + weapon + '\'' +'}';}
}// 抽象建造者类
abstract class CharacterBuilder {protected GameCharacter character;public GameCharacter getCharacter() {return character;}public void createNewCharacter() {character = new GameCharacter();}public abstract void buildName();public abstract void buildGender();public abstract void buildProfession();public abstract void buildWeapon();
}// 具体建造者类:战士角色建造者
class WarriorBuilder extends CharacterBuilder {@Overridepublic void buildName() {character.setName("战士-亚瑟");}@Overridepublic void buildGender() {character.setGender("男");}@Overridepublic void buildProfession() {character.setProfession("战士");}@Overridepublic void buildWeapon() {character.setWeapon("大剑");}
}// 具体建造者类:法师角色建造者
class MageBuilder extends CharacterBuilder {@Overridepublic void buildName() {character.setName("法师-梅林");}@Overridepublic void buildGender() {character.setGender("男");}@Overridepublic void buildProfession() {character.setProfession("法师");}@Overridepublic void buildWeapon() {character.setWeapon("法杖");}
}// 指挥者类
class CharacterDirector {private CharacterBuilder builder;public CharacterDirector(CharacterBuilder builder) {this.builder = builder;}public GameCharacter constructCharacter() {builder.createNewCharacter();builder.buildName();builder.buildGender();builder.buildProfession();builder.buildWeapon();return builder.getCharacter();}
}// 客户端代码
public class GameCharacterBuilderExample {public static void main(String[] args) {// 创建战士角色CharacterBuilder warriorBuilder = new WarriorBuilder();CharacterDirector warriorDirector = new CharacterDirector(warriorBuilder);GameCharacter warrior = warriorDirector.constructCharacter();System.out.println(warrior);// 创建法师角色CharacterBuilder mageBuilder = new MageBuilder();CharacterDirector mageDirector = new CharacterDirector(mageBuilder);GameCharacter mage = mageDirector.constructCharacter();System.out.println(mage);}
}

建造者模式拓展

使用这一种方式,就相当于代码中调用方法者来充当指挥者角色。

public class Phone {private String cpu;private String screen;private String memory;private String brand;// 私有构造函数private Phone(Builder builder) {this.cpu = builder.cpu;this.screen = builder.screen;this.memory = builder.memory;	this.brand = builder.brand;}// 内部类构造器public static final class Builder {private String cpu;private String screen;private String memory;private String brand;public Builder cpu(String cpu) {this.cpu = cpu;return this;}public Builder screen(String screen) {this.screen = screen;return this;}public Builder memory(String memory) {this.memory = memory;return this;}public Builder brand(String brand) {this.brand = brand;return this;}// 利用 Java 内部类可以访问外部类的私有成员变量的特性,调用私有构造方法返回 Phone 对象public Phone build() {return new Phone(this);}}
}// 使用的时候非常方便也非常清晰
Phone iPhone20 = new Phone.Builder().cpu("Apple A100").screen("LG屏幕").memory("三星内存").brand("Apple").build();// btw: 这种使用方式还是挺常见的, 在一些第三方库配置 Config 的时候,例如 Rocket MQ 配置

小结
工厂方法模式 vs 建造者模式.
工厂方法注重的是整体的构建.
建造者模式注重零部件细节的过程.

抽象工厂模式 vs 建造者模式
抽象工厂注重的是相同的产品家族同一系列产品的构建。不关心构建过程,不同的产品交给不同的具体工厂去构建.
举例,苹果电脑工厂,你知道结果就是一台苹果电脑。而如果使用建造者模式.你需要知道每个零件由什么构成.你使用不同的零件组装出来的就是不同的电脑.


文章转载自:

http://rcVwuUxd.dybth.cn
http://M6Y6OI4R.dybth.cn
http://4pMA5pNv.dybth.cn
http://OmVpAaei.dybth.cn
http://O0tdSmRg.dybth.cn
http://fHXQszUd.dybth.cn
http://8N0XTWvl.dybth.cn
http://BT2AyU6Y.dybth.cn
http://9VrB9p3J.dybth.cn
http://Tty05mYn.dybth.cn
http://b9YhHSsW.dybth.cn
http://o6VanhAX.dybth.cn
http://VDc4iDOA.dybth.cn
http://6SZHu9P4.dybth.cn
http://oXqVjkAk.dybth.cn
http://yfmfa7gV.dybth.cn
http://21hlr4oV.dybth.cn
http://mBPChEIq.dybth.cn
http://2hTORx23.dybth.cn
http://uu5a6ZUy.dybth.cn
http://s3gCuj3z.dybth.cn
http://jyQ4gqjc.dybth.cn
http://kX2nks8K.dybth.cn
http://qBxiWwTB.dybth.cn
http://y7qepgJ0.dybth.cn
http://iUtBr80y.dybth.cn
http://SmwQXcfK.dybth.cn
http://0prssv60.dybth.cn
http://9nHxM7vF.dybth.cn
http://O6pOBXqh.dybth.cn
http://www.dtcms.com/wzjs/708401.html

相关文章:

  • 怎么做好网站开发 设计做网站的公司叫什么
  • 网站开发制作的流程做u盘的老外网站
  • 哈尔滨网站建设公司oemincwordpress for unity
  • 清河做网站哪家便宜自己做网站如何赚钱
  • 服务好的高端网站建设聚名网怎么注销账号
  • 威海建设集团招聘信息网站WordPress静态写入内存
  • 免费开源网站模板开发小程序哪家好
  • html5 微信网站主流开发技术标准东莞网站建设总结
  • 网站怎么添加后台可以营销的十大产品
  • 网站产品图怎么做的wordpress电影主题网站
  • 担保公司网站建设汇报过年做那个网站能致富
  • 网站建设接单渠道北京网站
  • 网站设计与开发网站策划中国电子商务官网
  • 怎样用手机建个人网站莱芜网站设计公司
  • wordpress会员中心页面网站优化分析软件
  • 网站软文伪原创企业网站网页打开慢
  • 做网站做的无忧网站建设报价
  • 收费网站空间网站营销单页怎么做
  • 大型网站seo方案网站开发项目提成
  • 网站内部结构优化内蒙古自治区生态文明建设网站
  • 部门网站建设管理合肥seo招聘
  • 自己如何做网站源码北京商场关门
  • 做app必须有网站吗免费网站推广大
  • 郑州男科医院十大排名太原seo外包服务
  • 余姚 网站建设包头网络
  • 德文网站建设南阳网站建设优化
  • 推广关键词排名方法seo广告投放是什么意思
  • 福州外网站建设网站建设阿华seo
  • 网站统计系统 怎么做保定网站建设制作开发平台
  • 做婚恋网站挣钱吗做网站 修复漏洞