Skip to content

Instantly share code, notes, and snippets.

@galihlprakoso
Created January 13, 2019 04:02
Show Gist options
  • Save galihlprakoso/ede23ce0302850c332eee9b58476f70d to your computer and use it in GitHub Desktop.
Save galihlprakoso/ede23ce0302850c332eee9b58476f70d to your computer and use it in GitHub Desktop.
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