프로그래밍/자바 디자인 패턴

자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 자바 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

 

반응형