Created
January 13, 2019 04:02
-
-
Save galihlprakoso/ede23ce0302850c332eee9b58476f70d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package galihlprakoso.com.solidprinciple; | |
/** | |
* | |
* @author galihlarasprakoso | |
*/ | |
//Contoh yang tidak menggunakan | |
//Open/Closed Principle | |
class WarungMakanBuLastri{ | |
public void sajikanMakananBerdasarkanPesanan(String pesanan){ | |
if(pesanan.equalsIgnoreCase("Nasi Goreng")){ | |
System.out.println("Menyajikan Nasi Goreng"); | |
}else if(pesanan.equalsIgnoreCase("Mie Goreng")){ | |
System.out.println("Menyajikan Mie Goreng"); | |
} | |
//Jika kita ingin menambahkan menu pesanan baru, | |
//Kita harus menambahkan kondisi (if) lagi disini | |
//dengan merubah class Warung Makan | |
//Tentunya ini melanggar prinsip Open/Closed Principle | |
} | |
} | |
//Contoh yang menggunakan | |
//Open/Closed Principle | |
class WarungMakanBuSri{ | |
public void sajikanMakananBerdasarkanPesanan(Pesanan pesanan){ | |
pesanan.sajikanPesanan(); | |
} | |
} | |
interface Pesanan{ | |
void sajikanPesanan(); | |
} | |
class NasiGoreng implements Pesanan{ | |
@Override | |
public void sajikanPesanan() { | |
System.out.println("Menyajikan Nasi Goreng"); | |
} | |
} | |
class MieGoreng implements Pesanan{ | |
@Override | |
public void sajikanPesanan() { | |
System.out.println("Menyajikan Mie Goreng"); | |
} | |
} | |
//Untuk menambah menu, kita tidak perlu mengubah kode yang ada | |
//di class WarungMakanBuSri | |
//Misalnya kita ingin menambah menu makanan SateAyam | |
//Kita cukup membuat class baru bernama SateAyam | |
class SateAyam implements Pesanan{ | |
@Override | |
public void sajikanPesanan() { | |
System.out.println("Menyajikan Sate Ayam"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment