Pola Desain - Pola Objek Nol

Dalam pola Objek Null, objek null menggantikan pemeriksaan instance objek NULL. Alih-alih meletakkan if check untuk nilai null, Objek Null mencerminkan hubungan tidak melakukan apa-apa. Objek Null tersebut juga dapat digunakan untuk menyediakan perilaku default jika data tidak tersedia.

Dalam pola Objek Null, kita membuat kelas abstrak yang menentukan berbagai operasi yang harus dilakukan, kelas konkret yang memperluas kelas ini dan kelas objek null yang tidak menyediakan implementasi apa pun dari kelas ini dan akan digunakan tanpa tujuan di mana kita perlu memeriksa nilai null.

Penerapan

Kita akan membuat kelas abstrak AbstractCustomer yang mendefinisikan operasi. Di sini nama pelanggan dan kelas beton yang memperluas kelas AbstractCustomer . CustomerFactory kelas pabrik dibuat untuk mengembalikan objek RealCustomer atau NullCustomer berdasarkan nama pelanggan yang diteruskan kepadanya.

NullPatternDemo , kelas demo kami, akan menggunakan CustomerFactory untuk mendemonstrasikan penggunaan pola Objek Null.

Langkah 1

Buat kelas abstrak.

AbstractCustomer.java

public abstract class AbstractCustomer {
   protected String name;
   public abstract boolean isNil();
   public abstract String getName();
}

Langkah 2

Buat kelas beton yang memperluas kelas di atas.

RealCustomer.java

public class RealCustomer extends AbstractCustomer {

   public RealCustomer(String name) {
      this.name = name;		
   }
   
   @Override
   public String getName() {
      return name;
   }
   
   @Override
   public boolean isNil() {
      return false;
   }
}

NullCustomer.java

public class NullCustomer extends AbstractCustomer {

   @Override
   public String getName() {
      return "Not Available in Customer Database";
   }

   @Override
   public boolean isNil() {
      return true;
   }
}

LANGKAH 3

Buat Kelas CustomerFactory .

CustomerFactory.java

public class CustomerFactory {
	
   public static final String[] names = {"Rob", "Joe", "Julie"};

   public static AbstractCustomer getCustomer(String name){
   
      for (int i = 0; i < names.length; i++) {
         if (names[i].equalsIgnoreCase(name)){
            return new RealCustomer(name);
         }
      }
      return new NullCustomer();
   }
}

LANGKAH 4

Gunakan CustomerFactory untuk mendapatkan objek RealCustomer atau NullCustomer berdasarkan nama pelanggan yang diteruskan kepadanya.

NullPatternDemo.java

public class NullPatternDemo {
   public static void main(String[] args) {

      AbstractCustomer customer1 = CustomerFactory.getCustomer("Rob");
      AbstractCustomer customer2 = CustomerFactory.getCustomer("Bob");
      AbstractCustomer customer3 = CustomerFactory.getCustomer("Julie");
      AbstractCustomer customer4 = CustomerFactory.getCustomer("Laura");

      System.out.println("Customers");
      System.out.println(customer1.getName());
      System.out.println(customer2.getName());
      System.out.println(customer3.getName());
      System.out.println(customer4.getName());
   }
}

LANGKAH 5

Verifikasi hasilnya.

Customers
Rob
Not Available in Customer Database
Julie
Not Available in Customer Database