Kesempatan kali ini saya akan mencoba menerapkan contoh observer di design pattern dari sourcemaking.com
Tapi akan lebih afdol apabila kita lebih tau tentang pengertian observer di design pattern terlebih dahulu
The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their methods.(Wikipedia.com)
UML class diagram dari Observer
Contoh penerapan dari observer sendiri mirip seperti pelelangan, dimana yang melelang seperti class subject sedangkan yang mengikuti lelang tersebut seperti concrete observer a, b, ..., dst.
Kalau masih bingung dengan contoh diatas mari kita lihat contoh dari sourcemaking.com berikut
Program berbahasa java ini akan menjelaskan mengenai cara kerja observer.
Di program ini yang menjadi subject adalah SensorSystem, sedangkan Lighting, Gates dan Surveillance merupakan Concrete Observer A, B, dan C. Kemudian yang menotifikasi subject adalah Alarm Listener
Pada contoh ini saya akan memakai IDE java yaitu BlueJ
Source codenya seperti ini (diambil dari sourcemaking)
interface AlarmListener { public void alarm(); }
class SensorSystem {
private java.util.Vector listeners = new java.util.Vector();
public void register( AlarmListener al ) { listeners.addElement( al ); }
public void soundTheAlarm() {
for (java.util.Enumeration e=listeners.elements(); e.hasMoreElements(); )
((AlarmListener)e.nextElement()).alarm();
} }
class Lighting implements AlarmListener {
public void alarm() { System.out.println( "lights up" ); }
}
class Gates implements AlarmListener {
public void alarm() { System.out.println( "gates close" ); }
}
class CheckList {
public void byTheNumbers() {
localize();
isolate();
identify(); }
protected void localize() {
System.out.println( " establish a perimeter" ); }
protected void isolate() {
System.out.println( " isolate the grid" ); }
protected void identify() {
System.out.println( " identify the source" ); }
}
class Surveillance extends CheckList implements AlarmListener {
public void alarm() {
System.out.println( "Surveillance - by the numbers:" );
byTheNumbers(); }
protected void isolate() { System.out.println( " train the cameras" ); }
}
public class ClassVersusInterface {
public static void main( String[] args ) {
SensorSystem ss = new SensorSystem();
ss.register( new Gates() );
ss.register( new Lighting() );
ss.register( new Surveillance() );
ss.soundTheAlarm();
} }
Mungkin kira-kira sampai segini dulu coba2 kita. sampai ketemu di coba2yang lainnya
Tidak ada komentar:
Posting Komentar