최고의 널 개체 모델 튜토리얼 2024년, 이 튜토리얼에서는 실현,를 배울 수 있습니다.
빈 객체 모델 (널 개체 패턴) 및 NULL 개체 인스턴스에 대한 빈 개체 대체 체크. 널 객체는 반응 어떤 행동의 관계를 null 값을 확인,하지만하지 않습니다. 데이터를 사용할 수없는 경우 이러한 널 객체는 기본 동작을 제공 할 수 있습니다.
빈 객체 모델, 우리는 추상 클래스의 지정된 엔티티를 생성하고 다양한 작업을 수행하기 위해 클래스를 확장 할뿐만 아니라, 클래스이 빈 객체 클래스 중 빈 객체 클래스를 완벽하게 구현하지 않았다 만들 장소에서의 사용은 null 값을 확인해야합니다.
우리는 (이 경우에는, 고객의 이름) 사용자 지정 동작AbstractCustomer추상 클래스를 생성하고, 엔티티 클래스AbstractCustomer클래스를 확장 할 것이다. 고객에 따라CustomerFactory팩토리 클래스의 이름은 제공 또는RealCustomerNullCustomer 개체를 반환합니다.
NullPatternDemo,우리는 빈 객체 모델의 사용을 설명하기CustomerFactory 클래스의사용을 입증한다.
추상 클래스를 만듭니다.
AbstractCustomer.java
공개 추상 클래스 AbstractCustomer { 보호 된 문자열 이름; 공공 추상 부울 isNil (); 공공 추상적 인 문자열 getName (); }
클래스 위의 엔티티 클래스를 확장 만듭니다.
RealCustomer.java
공용 클래스 RealCustomer는 AbstractCustomer를 {확장 공공 RealCustomer (문자열 이름) { this.name = 이름; } @Override 공공 문자열 getName () { 이름을 반환; } @Override 공공 부울 isNil () { false를 반환; } }
NullCustomer.java
공용 클래스 NullCustomer는 AbstractCustomer를 {확장 @Override 공공 문자열 getName () { "고객 데이터베이스에서 사용할 수 없음"반환; } @Override 공공 부울 isNil () { true를 반환; } }
CustomerFactory클래스를 만듭니다.
CustomerFactory.java
공용 클래스 CustomerFactory { 공공 정적 최종 문자열 [] 이름 = { "롭", "조", "줄리"}; 공공 정적 AbstractCustomer getCustomer (문자열 이름) { 대한 (INT 전 = 0; i가 names.length를 <; 내가 ++) { 경우 (이름 [i]를 .equalsIgnoreCase (이름)) { 새로운 RealCustomer (이름)을 반환; } } ) (새 NullCustomer를 반환; } }
RealCustomer또는NullCustomer개체를 가져 전달하는 클라이언트의 이름을 기준으로CustomerFactory을 사용합니다.
NullPatternDemo.java
공용 클래스 NullPatternDemo { 공공 정적 무효 메인 (문자열 []에 args) { AbstractCustomer 1 고객 = CustomerFactory.getCustomer ( "약탈"); AbstractCustomer customer2 = CustomerFactory.getCustomer ( "밥"); AbstractCustomer customer3 = CustomerFactory.getCustomer ( "줄리"); AbstractCustomer customer4 = CustomerFactory.getCustomer ( "로라"); 에서 System.out.println ( "고객"); 에서 System.out.println (customer1.getName ()); 에서 System.out.println (customer2.getName ()); 에서 System.out.println (customer3.getName ()); 에서 System.out.println (customer4.getName ()); } }
출력을 확인합니다.
고객 롭 고객 데이터베이스에 사용할 수 없음 줄리 고객 데이터베이스에 사용할 수 없음