프로그래밍/자바 디자인 패턴
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 자바 NULL 오브젝트 패턴
Ericlee
2021. 4. 18. 02:23
반응형
Null Object 패턴에서는 비즈니스의미가 없는 오브젝트가 오브젝트로 생성 null됩니다.
NULL 포인터 체크를 대체하기 위해 비즈니스의미 없는 객체를 사용합니다.
Null 객체는 데이터를 사용할 수 없을 때 기본 동작을 제공합니다.
Null Object 패턴에서는 일반적으로 다양한 작업을 지정하기 위해 추상 클래스를 만듭니다.
Null Object 및 concreate 클래스는이 추상 클래스를 확장합니다.
Null Object 클래스는 빈 로직을 제공한다.
예제
abstract class AbstractEmployee {
protected String name;
public abstract boolean isNull();
public abstract String getName();
}
class Programmer extends AbstractEmployee {
public Programmer(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
@Override
public boolean isNull() {
return false;
}
}
class NullCustomer extends AbstractEmployee {
@Override
public String getName() {
return "Not Available";
}
@Override
public boolean isNull() {
return true;
}
}
class EmployeeFactory {
public static final String[] names = {"Rob", "Joe", "Jack"};
public static AbstractEmployee getCustomer(String name){
for (int i = 0; i < names.length; i++) {
if (names[i].equalsIgnoreCase(name)){
return new Programmer(name);
}
}
return new NullCustomer();
}
}
public class Main {
public static void main(String[] args) {
AbstractEmployee emp = EmployeeFactory.getCustomer("Rob");
AbstractEmployee emp2 = EmployeeFactory.getCustomer("Bob");
AbstractEmployee emp3 = EmployeeFactory.getCustomer("Jack");
AbstractEmployee emp4 = EmployeeFactory.getCustomer("Tom");
System.out.println(emp.getName());
System.out.println(emp2.getName());
System.out.println(emp3.getName());
System.out.println(emp4.getName());
}
}
위의 코드는 다음 결과를 출력합니다
Rob
Not Available
Jack
Not Available
반응형