Design Pattern Memento

Design Pattern Memento jika diartikan di indonesia adalah kenang-kenangan. Sejalan dengan artinya dimana design pattern yang satu ini akan merekam sebuah jejak (yang memang direkam) walaupun ditimpa oleh jejak-jejak yang lainnya, nantinya rekaman jejak tersebut bisa dimunculkan kembali.

Konsep kerjanya dengan menggunakan 2 class yang mempunyai method yang sama. Bedanya hanya dibagian consturct(), class yang kedua menyimpan object hasil definisi class yang pertama.

Disini akan dicoba untuk menerapkan design pattern momento dalam studi kasus penadaan halaman web. Halaman web yang menarik bisa ditandai terlebih dahulu (seperti membaca sebuah buku, kalau ada halaman yang menarik yaw dilipat untuk menandainya) dan ketika dibutuhkan bisa ditampilkan kembali.

Kita memerlukan 2 buah class yaitu class Jelajah_Web yang bertugas untuk menampilkan judul web serta link web. Class kedua yaitu class Tandai_Web bertugas untuk menandai tautan yang diinginkan. Pada class Tandai_Web, variabel yang diterima ialah object yang telah tercipta dari class Jelajah_Web.

class Jelajah_Web {
    private $judul;
    private $link_url;

      $this->set_judul($in_judul);
    function __construct($in_judul, $in_link_url) {
      $this->set_link_url($in_link_url);
    }
    public function ambil_judul() {
      return $this->judul;
    }
    public function set_judul($in_judul) {
      $this->judul = $in_judul;
    }
    public function ambil_link_url() {
      return $this->link_url;
    }
    public function set_link_url($in_link_url) {
      $this->link_url = $in_link_url;
    }
}

class Tandai_Web {
    private $judul;
    private $link_url;
    function __construct(Jelajah_Web $Jelajah_Web) {
      $this->set_judul($Jelajah_Web);
      $this->set_link_url($Jelajah_Web);
    }
    public function ambil_judul(Jelajah_Web $Jelajah_Web) {
      $Jelajah_Web->ambil_judul($this->judul);
    }
    public function set_judul(Jelajah_Web $Jelajah_Web) {
      $this->judul = $Jelajah_Web->ambil_judul();
    }
    public function ambil_link_url(Jelajah_Web $Jelajah_Web) {
      $Jelajah_Web->set_link_url($this->link_url);
    }
    public function set_link_url(Jelajah_Web $Jelajah_Web) {
      $this->link_url = $Jelajah_Web->ambil_link_url();
    }
}


Cara penggunaannya kira-kira seperti di bawah ini. Contoh halaman web yang disimpan, saya gunakan blog saya saja yaw ;).

$Jelajah_Web = new Jelajah_Web('NgBlog Biar Gak GoBlog, BlogNya Gede Lumbung','http://gedelumbung.com');
$Tandai_Web = new Tandai_Web($Jelajah_Web);

echo'Judul Website : '.$Jelajah_Web->ambil_judul();
echo '<br>';
echo'Alamat Link : '.$Jelajah_Web->ambil_link_url();
echo '<br><br>';

$Tandai_Web->set_judul($Jelajah_Web);

$Jelajah_Web->set_link_url("http://gedelumbung.com/?page_id=619");
echo'Link Profil: '.$Jelajah_Web->ambil_link_url();
echo '<br><br>';

$Jelajah_Web->set_link_url("http://gedelumbung.com/?page_id=446");
echo'Link Sahabat : '.$Jelajah_Web->ambil_link_url();
echo '<br><br>';

$Tandai_Web->ambil_link_url($Jelajah_Web);
echo'Kembali ke Link Awal : '.$Jelajah_Web->ambil_link_url();

echo '<br><br>';

Dalam design pattern Memento, terdapat 3 peran yang berebeda dan saling berhubungan yaitu :
  1. Originator, object yang tau kapan harus menyimpan dirinya sendiri
  2. Caretaker, object yang tau kenapa dan kapan object Originator untuk menyimpan dan mengembalikan dirinya kembali
  3. Memento, kunci yang tertulis dan dibaca oleh Originator dan dipanggil oleh Caretaker

Comments

Popular posts from this blog

Help and Documentation - bloopendorse.co

Aestehic and Minimalist Design - bloopendorse.co

Kentut calm vs kentut brutal