Latest web development tutorials

ヌルオブジェクトモデル

空のオブジェクトモデル(ヌルオブジェクトパターン)、およびNULLオブジェクトインスタンスに空のオブジェクトの置換チェック。 ヌルオブジェクトは、反応に任意のアクションの関係をnull値のチェックではなく、されていません。 データが利用できない場合には、このようなヌルオブジェクトは、デフォルトの動作を提供することができます。

空のオブジェクトモデルでは、我々は抽象クラスの指定されたエンティティを作成し、各種操作を実行するには、このクラスを拡張するだけでなく、クラスを作成するには、この空のオブジェクトクラスのいずれかの操作を実行しませんでしたシームレス空のオブジェクトクラスを実装場所での使用は、NULL値を確認する必要があります。

実現

私たちは(この場合は、顧客の名前)カスタムアクションAbstractCustomer抽象クラスを作成し、エンティティクラスAbstractCustomerクラスを拡張します。 顧客に基づいてCustomerFactoryファクトリクラス名を引き渡すかRealCustomerNullCustomerオブジェクトを返します。

NullPatternDemoは、我々は空のオブジェクトモデルの使用を実証するためにCustomerFactoryクラスの使用を示します。

ヌルオブジェクトパターンUMLダイアグラム

ステップ1

抽象クラスを作成します。

AbstractCustomer.java

パブリック抽象クラスAbstractCustomer {
   保護された文字列名。
   パブリック抽象ブールisNil();
   パブリック抽象文字列のgetName();
}

ステップ2

クラスの上のエンティティクラスを拡張作成します。

RealCustomer.java

パブリッククラスRealCustomerはAbstractCustomerを{拡張します

   公共RealCustomer(文字列名){
      this.name =名;		
   }
   
   @Override
   公共の文字列のgetName(){
      名前を返します。
   }
   
   @Override
   パブリックブールisNil(){
      falseを返します。
   }
}

NullCustomer.java

パブリッククラスNullCustomerはAbstractCustomerを{拡張します

   @Override
   公共の文字列のgetName(){
      「顧客データベースでは使用できません "を返します。
   }

   @Override
   パブリックブールisNil(){
      trueを返します。
   }
}

ステップ3

CustomerFactoryクラスを作成します。

CustomerFactory.java

パブリッククラスCustomerFactory {
	
   公共のstatic final String []型名= { "ロブ"、 "ジョー"、 "ジュリー"};

   パブリック静的AbstractCustomer getCustomer(文字列名){
      以下のために(int型私= 0; iはnames.length <;私は++){
         場合(名前[i]が.equalsIgnoreCase(名)){
            新しいRealCustomer(名前)を返します。
         }
      }
      新しいNullCustomerを返します();
   }
}

ステップ4

RealCustomerまたはNullCustomerオブジェクトを取得するために渡すために、クライアントの名前に基づいてCustomerFactoryを、使用してください。

NullPatternDemo.java

パブリッククラスNullPatternDemo {
   公共の静的な無効メイン(文字列[] args){

      AbstractCustomer customer1 = 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());
   }
}

ステップ5

出力を確認します。

お客様
ロブ
顧客データベースで使用できません
ジュリー
顧客データベースで使用できません