<?php
class Lampu {
private $lokasi_lampu;
private $status;
function __construct($lokasi_lampu_in, $status_in) {
$this->aturLampu($lokasi_lampu_in);
$this->aturStatus($status_in);
}
function ambilLampu() {
return $this->lokasi_lampu;
}
function ambilStatus() {
return $this->status;
}
function aturLampu($lokasi_lampu_in) {
$this->lokasi_lampu = $lokasi_lampu_in;
}
function aturStatus($status_in) {
$this->status = $status_in;
}
function nyalakan() {
$this->aturLampu('Nyalakan '.$this->ambilLampu());
$this->aturStatus(str_replace('MATI','HIDUP',$this->ambilStatus()));
}
function matikan() {
$this->aturLampu(str_replace('Nyalakan','Matikan',$this->ambilLampu()));
$this->aturStatus(str_replace('HIDUP','MATI',$this->ambilStatus()));
}
function tampilkan() {
return $this->ambilLampu().' - '.$this->ambilStatus();
}
}
abstract class SwitchLampu {
protected $lampu;
function __construct($lampu_in) {
$this->lampu = $lampu_in;
}
abstract function jalankan();
}
class HidupkanLampu extends SwitchLampu {
function jalankan() {
$this->lampu->nyalakan();
}
}
class MatikanLampu extends SwitchLampu {
function jalankan() {
$this->lampu->matikan();
}
}
class Jalankan{
function panggil(SwitchLampu $lampu_in) {
$lampu_in->jalankan();
}
}
$jalan = new Jalankan();
$lampu = new Lampu('Lampu Taman', 'status MATI');
cetak('Kondisi Awal :');
cetak($lampu->tampilkan());
cetak('');
$lampu_hidup = new HidupkanLampu($lampu);
$jalan->panggil($lampu_hidup);
cetak('Ketika dihidupkan :');
cetak($lampu->tampilkan());
cetak('');
$lampu_mati = new MatikanLampu($lampu);
$jalan->panggil($lampu_mati);
cetak('Ketika dimatikan :');
cetak($lampu->tampilkan());
cetak('');
function cetak($isi) {
echo $isi."<br/>";
}
?>
Di bagian akhir, kita buat sebuah class yang mengimplementasikan abstract function dari class SwitchLampu untuk menjalankan function matikan atau hidupkan dari class Lampu. Kemudian perubahan tersebut ditampilkan dengan memanfaatkan function tampilkan yang juga dimilik oleh class Lampu.
sumber : wikipedia & gedelumbung
0 Komentar untuk "penerapan desain pattern command di php"