refactoring : mutable data - change reference to value
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package com.example.refactoring._06_mutable_data._23_change_reference_to_value;
|
||||
|
||||
public class Person {
|
||||
|
||||
private TelephoneNumber officeTelephoneNumber;
|
||||
|
||||
public String officeAreaCode() {
|
||||
return this.officeTelephoneNumber.areaCode();
|
||||
}
|
||||
|
||||
public void officeAreaCode(String areaCode) {
|
||||
this.officeTelephoneNumber = new TelephoneNumber(areaCode, this.officeNumber());
|
||||
}
|
||||
|
||||
public String officeNumber() {
|
||||
return this.officeTelephoneNumber.number();
|
||||
}
|
||||
|
||||
public void officeNumber(String number) {
|
||||
this.officeTelephoneNumber = new TelephoneNumber(this.officeAreaCode(), number);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.example.refactoring._06_mutable_data._23_change_reference_to_value;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class TelephoneNumber {
|
||||
|
||||
private final String areaCode;
|
||||
|
||||
private final String number;
|
||||
|
||||
public TelephoneNumber(String areaCode, String number) {
|
||||
this.areaCode = areaCode;
|
||||
this.number = number;
|
||||
}
|
||||
|
||||
public String areaCode() {
|
||||
return areaCode;
|
||||
}
|
||||
|
||||
public String number() {
|
||||
return number;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(areaCode, number);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) return true;
|
||||
if (obj == null || getClass() != obj.getClass()) return false;
|
||||
TelephoneNumber that = (TelephoneNumber) obj;
|
||||
return Objects.equals(areaCode, that.areaCode) && Objects.equals(number, that.number);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.example.refactoring._06_mutable_data._23_change_reference_to_value.before;
|
||||
|
||||
public class Person {
|
||||
|
||||
private TelephoneNumber officeTelephoneNumber;
|
||||
|
||||
public String officeAreaCode() {
|
||||
return this.officeTelephoneNumber.areaCode();
|
||||
}
|
||||
|
||||
public void officeAreaCode(String areaCode) {
|
||||
this.officeTelephoneNumber.areaCode(areaCode);
|
||||
}
|
||||
|
||||
public String officeNumber() {
|
||||
return this.officeTelephoneNumber.number();
|
||||
}
|
||||
|
||||
public void officeNumber(String number) {
|
||||
this.officeTelephoneNumber.number(number);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.example.refactoring._06_mutable_data._23_change_reference_to_value.before;
|
||||
|
||||
public class TelephoneNumber {
|
||||
|
||||
private String areaCode;
|
||||
|
||||
private String number;
|
||||
|
||||
public String areaCode() {
|
||||
return areaCode;
|
||||
}
|
||||
|
||||
public void areaCode(String areaCode) {
|
||||
this.areaCode = areaCode;
|
||||
}
|
||||
|
||||
public String number() {
|
||||
return number;
|
||||
}
|
||||
|
||||
public void number(String number) {
|
||||
this.number = number;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.example.refactoring._06_mutable_data._23_change_reference_to_value;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class TelephoneNumberTest {
|
||||
|
||||
@Test
|
||||
void testEquals() {
|
||||
TelephoneNumber telephoneNumber1 = new TelephoneNumber("123", "1234");
|
||||
TelephoneNumber telephoneNumber2 = new TelephoneNumber("123", "1234");
|
||||
|
||||
assertEquals(telephoneNumber1, telephoneNumber2);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user