详解java创建一个女朋友类(对象啥的new一个就是)==建造者模式,一键重写
创建一个女朋友,她有很多的属性,比如:性别,年龄,身高,体重,类型等等,虽然每个女朋友都有这些属性,但是每个人找女朋友的要求都是不一样的,有的人喜欢男的,有的人喜欢女的,有的喜欢胖的,不同的人可以根据自己的喜好去建造不同的女朋友,我们不需要关心她是怎么建造的,我们只需要去指定她的属性就行了
相比如文字解释,我更习惯撸代码来解释,下面来一步步实现怎么用java来为你创建一个女朋友
首先定义一个女朋友类:
package nuoyanli; /** * Created by ${nuoyanli} on 2019/4/7. */ public class GirlFriend { private String sex;//性别 private int age;//年龄 private int stature;//身高 private int weight;//体重 private String type;//类型
按照我们以往的理解,要创建一个女朋友是不是要直接new出来,我们可以通过构造方法把属性传过去
例如:我对女朋友的要求只有一个,是女的就行,定义一个构造方法:
public GirlFriend(String sex) { this.sex = sex; }
然后再需要的时候来创建她:
GirlFriend girlFriend = new GirlFriend("女");
如果我们要求性别和身高就要定义:
public GirlFriend(String sex, int stature) { this.sex = sex; this.stature = stature; }
你想想每个人的要求都不一样,你得创建多少个构造方法,而且参数多了,可读性很差比如:
GirlFriend girlFriend = new GirlFriend("女",19,170,90,"声优");
java有一个建造者模式:
建造一个GirlFriendBuilder类:
package nuoyanli; /** * Created by ${nuoyanli} on 2019/4/7. */ public class GirlFriendBuilder { String sex;//性别 int age;//年龄 int stature;//身高 int weight;//体重 String type;//类型 public GirlFriendBuilder setSex(String sex) { this.sex = sex; return this; } public GirlFriendBuilder setAge(int age) { this.age = age; return this; } public GirlFriendBuilder setStature(int stature) { this.stature = stature; return this; } public GirlFriendBuilder setWeight(int weight) { this.weight = weight; return this; } public GirlFriendBuilder setType(String type) { this.type = type; return this; } /** *返回一个GirlFriend对象 */ public GirlFriend build() { return new GirlFriend(this); } }
然后在GirlFriend类里面构造方法传入GirlFriendBuilder对象:
public GirlFriend(GirlFriendBuilder builder) { this.sex = builder.sex; this.age = builder.age; this.stature = builder.stature; this.weight = builder.weight; this.type = builder.type; }
然后创建的时候:
GirlFriend girlFrie1nd = new GirlFriendBuilder() .setAge(19) .setSex("女") .setType("声优") .setStature(175) .build();
这样就成功创建了一个女朋友,代码的可读性也挺高的
如果对这个女朋友不满意,可以自定义属性哦,由于笔者水平有限,并且找不到女朋友所以只能先new一个girFriend对象
以上所述是小编给大家介绍的java建造者模式一键重写详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
赞 (0)