OO Design

19Mar09
public interface PartaiPolitik {
	// semua aktivitas parpol yang diizinkan di Indonesia
	void registerPemilu(int tahun);
	void kerja();
}

public abstract class AbstractPartaiPolitik implements PartaiPolitik {
	// Menyediakan implementasi default dari sebuah parpol,
	// jadi kalo mo bikin parpol baru, cukup extends kelas ini saja
	// Soalnya banyak implementasi parpol yang sama-sama aje
	// (makanya rata-rata sama semua)
	// ...

	public void kerja() {
		// do nothing
	}
}

public class Golkar extends AbstractPartaiPolitik {
	private volatile Capres capres;

	// big class with multiple responsibilities..
}

public class PDIP extends AbstractPartaiPolitik {
	public static final Capres capres = Megawati.getInstance();

	// well known operation
	public void tolakUUPornografi() {
		// implementation is omitted
	}

	public void changeCapres() {
		throw new UnsupportedOperationException();
	}
}

public class PD extends AbstractPartaiPolitik {
	// advertise
	public void gelengkanKepalaDanKatakanTidak();
}

public class Undisclosed {
	public PartaiPolitik getPKS() {
		return PKS.instance;
	}

	// inner class
	private class PKS implements PartaiPolitik {
		// Lazy instantiation
		// (c.f. Effective Java 2nd ed., by Joshua Bloch)
		private static PKS instance = new PKS();

		// mengimplementasi semua method di interface
		// karena tidak extends dari default abstract class
		// ...

		public void dispose() {
			// tidak semua parpol punya method ini
		}
	}
}


5 Responses to “OO Design”  

  1. 1 rika

    -_-;

  2. 2 brian

    ya ampyun..

    pekaes singleton pattern rupanya.. :p

  3. 3 yaniwid

    Agak tertipu judul posting… :-)
    Saya pikir ada bahasan OOD…

  4. 4 jaya

    astaga … ndan … coding sudah mengakar dalam kehidupan sehari2 keknya :P

  5. 5 petra

    nice!


Leave a Reply