详解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)

相关推荐

  • Java运用设计模式中的建造者模式构建项目的实例解析

    1.建造者模式概念 定义: 将一个复杂的对象构建与其表示相分离,使得同样的构建过程可以创建不同的表示: 核心 : 构建与表示分离,同构建不同表示 区别于 抽象工厂模式 : (1)与抽象工厂模式 相似,因为它也可以创建复杂对象.主要的区别是建造者模式着重于 一步步构造一个复杂对象,关注的是零件类型和装配工艺的顺序 .而抽象工厂模式着重于多个系列的产品对象(简单的或是复杂的).建造者模式在最后的一步返回产品,而对于抽象工厂来说,产品是立即返回的. (2)在建造者模式里,有个指导者,由指导者来管理建造

  • java设计模式之建造者模式学习

    1 概述建造者模式(Builder Pattern)主要用于"分步骤构建一个复杂的对象",在这其中"分步骤"是一个稳定的算法,而复杂对象的各个部分则经常变化.因此, 建造者模式主要用来解决"对象部分"的需求变化. 这样可以对对象构造的过程进行更加精细的控制. 2 示例以生产手机为例,每个手机分为屏幕Screen.CPU.Battery.现在要生产两种手机,苹果机和三星. 苹果: 复制代码 代码如下: package org.scott.build

  • Java中继承、多态、重载和重写介绍

    什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(下面会讲到,这种方式叫重写)的方式,产生一个新的类型.继承是面向对象的三个基本特征--封装.继承.多态的其中之一,我们在使用JAVA时编写的每一个类都是在继承,因为在JAVA语言中,java.lang.Object类是所有类最根本的基类(或者叫父类.超类),如果

  • java中重载,继承,重写和多态的区别

    重载,继承,重写和多态的区别: 1)继承是子类获得父类的成员. 2)重写是继承后重新实现父类的方法. 3)重载是在一个类里一系列参数不同名字相同的方法. 4)多态则是为了避免在父类里大量重载引起代码臃肿且难于维护. 网上看到一个有趣的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法. 下面的例子包含了这四种实现: class Triangle extends Shape { public int getSides() {   return 3;  } } class Rectang

  • java 中newInstance()方法和new关键字的区别

    java 中newInstance()方法和new关键字的区别 * 它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类. * 那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩.可扩展和可重用等软件设计思想. * 我们使用关键字new创建一个类的时候,这个类可以没有被加载.但是使用newInstance()方法的时候, * 就必须保证:1.这个类已经加载:2.这个类已经连接了. * newInstance()实际上是把new这个方式分解为两步,即首先调用Class

  • 浅析Java中的 new 关键字

    java的new关键字想必大家都知道这是实例化一个对象.没错,也是为新对象分配内存空间. 比如new MyDate(22,7,1964)这样一个案例,他的完成需要四部: 一.为新对象分配内存空间,将MyDate存储到堆. 二.执行显示的初始化 三.执行构造器.new方法中括号参数传递给构造器,出书话该对象数值 四.该变量被赋值为堆内存中新对象的引用 通俗的说,你new的操作,实际上是在内存的堆中新添加一个new的对象并且通过构造方法初始化这个新对象并且在栈中存放该对象的引用 下面我有一个案例,通

  • Java String 和 new String()的比较与区别

    Java String 和 new String()的区别 栈区存引用和基本类型,不能存对象,而堆区存对象.==是比较地址,equals()比较对象内容. String str1 = "abcd"的实现过程:首先栈区创建str引用,然后在String池(独立于栈和堆而存在,存储不可变量)中寻找其指向的内容为"abcd"的对象,如果String池中没有,则创建一个,然后str指向String池中的对象,如果有,则直接将str1指向"abcd"&qu

  • Java中new关键字和newInstance方法的区别分享

    newInstance()使用类加载机制,new是创建一个新类.从JVM角度看,使用new创建一个类的时候,这个类可以没有被加载.但是使用newInstance()方法的时候,就必须保证这个类已加载且类已经连接了. 复制代码 代码如下: String className="test";Class c=Class.forName(className); factory=(ExampleInterface)c.newInstance(); newInstance():若类型.低效率,只能调

  • Java设计模式之建造者模式(Builder模式)介绍

    Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体构建细节.Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到. 为何使用建造者模式 是为了将构建复杂对象的过程和它的部件解耦.注意:是解耦过程和部件. 因为一个复杂的对象,不但有很多大量组成部分,如汽车,有很多部件:车轮.方向盘.发动机,还

  • java方法重写实例分析

    本文实例讲述了java方法重写,分享给大家供大家参考.具体分析如下: 一.方法的重写概述: 1.在子类中可以根据需要对从基类中继承来的方法进行重写. 2.重写的方法和被重写的方法必须具有相同方法名称.参数列表和返回类型. 3.重写方法不能使用比被重写的方法更严格的访问权限. 二.程序代码如下: class Person{ private int age; private String name; public void setAge(int age){ this.age = age; } pub

随机推荐