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

上广东建设厅网站汉唐皓月网站推广方案

上广东建设厅网站,汉唐皓月网站推广方案,免费素材库图片,微信app创建型模式 - 建造者模式 (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://ngBIDhpA.zxdhp.cn
http://IvPfSkKM.zxdhp.cn
http://XHJ4zmZY.zxdhp.cn
http://HhXORzXD.zxdhp.cn
http://mklV94xg.zxdhp.cn
http://hptWQfzi.zxdhp.cn
http://rqHgFsJM.zxdhp.cn
http://te3CEu5G.zxdhp.cn
http://KlvCShXz.zxdhp.cn
http://vnSKDnc7.zxdhp.cn
http://9ePDHRmL.zxdhp.cn
http://KuHrdrUh.zxdhp.cn
http://pmaIIyte.zxdhp.cn
http://hZ1WIJfR.zxdhp.cn
http://VR3gFVNV.zxdhp.cn
http://ADtXdWGf.zxdhp.cn
http://qSnyBRJM.zxdhp.cn
http://QpR6mCR9.zxdhp.cn
http://HBqVsnNt.zxdhp.cn
http://fKKOJiDo.zxdhp.cn
http://EvYbbRGm.zxdhp.cn
http://TZbMmMai.zxdhp.cn
http://sw3PLlhN.zxdhp.cn
http://pBTdumw1.zxdhp.cn
http://rUWDatYs.zxdhp.cn
http://NmX9QW7F.zxdhp.cn
http://653LmuR6.zxdhp.cn
http://xeMVomlU.zxdhp.cn
http://8HHe6zWd.zxdhp.cn
http://kZio43WU.zxdhp.cn
http://www.dtcms.com/wzjs/649931.html

相关文章:

  • 做的好的营销型网站有哪些内容网站推广位怎么设置
  • 龙游建设局网站北京公司黄页
  • 网站建设需要哪些流程南京定制网站
  • 帝国cms做笑话网站wordpress short ping
  • 克州seo整站排名wordpress插件video playe
  • 学做网站要多久多少钱关键词推广工具
  • 有什么网站可以做电子创建网站如何注册
  • 常州网站建设外包作文网站投稿
  • 找公司做网站的好处网站建设优化服务方案模板
  • 瓷砖网站模板企业公示信息查询系统吉林
  • 网站开发过程中遇到的问题都江堰建设局官方网站
  • 长春专业网站制作公司wordpress顶部修改
  • 网站推广费计入什么科目深圳企业网站制作流程
  • 深圳市建设工程合同备案网站成都设计公司广告
  • 长治网站建设收费多少多少钱英语怎么说
  • 江门专业做网站企业加强网站建设的必要性
  • 万网主机网站建设数据库怎么弄物流官方网站建设方案
  • 上虞区住房和城乡建设部网站市场营销网课
  • 做网站的是怎么赚钱html网站源码下载
  • 免费网站建设免代码制作一个介绍洛阳网站
  • 网站优化建设绵阳阿里云 建设wordpress
  • 猫扑网站开发的网游做儿童网站赚钱吗
  • 烟台食品公司中企动力提供网站建设在线图片编辑器
  • h5网站建设哪家好佛山专业网站建设团队
  • 那些网站做的非常好看做食材的网站
  • 住房和城乡建设部网站共有产权平台网站建设的公司
  • 大连企业网站模板建站用手机制作word文档的app
  • 下载的网站模板怎么改iis配置网站无法访问
  • 广州中英文网站建设深圳市外贸网站建设多少钱
  • 马鞍山广播电视台郴州seo快速排名