Pola desain
Dalam dunia rekayasa perangkat lunak, Design Pattern adalah solusi umum yang berulang untuk masalah yang sering terjadi dalam desain software. Design pattern bukanlah desain yang sudah final dan bisa langsung diubah ke code! Ingatlah hal ini.
Nah, berhubung saya tidak bisa menjelaskan semuanya, saya akan menjelaskan salah satu design pattern. Design Pattern terdapat beberapa macam, yang diantaranya adalah
1. Creational Design Pattern
2. Structural Design Pattern
3. Behavioral Design Pattern
4. dan ... udah sih cuma 3.
Saya ingin menjelaskan tentang Bridge yang termasuk Structural Design Pattern.
Bridge merupakan Design pattern yang memisah object interface dengan implementasinya. Tujuannya adalah agar diantara keduanya dapat bervariasi dan gampang untuk diubah.
Ini contoh hierarkinya
Gunakan pola Bridge ketika :
1. Kamu ingin run-time tergantung dengan implementasinya,
2. Kamu memiliki proliferasi kelas yang dihasilkan dari banyak implementasi,
3. Kamu ingin berbagi sebuah implementasi antara beberapa objek,
4. Kamu perlu memetakan hierarki kelas orthogonal.
Structure
Contoh Implementasi Coding
<?php
abstract class BridgeBook {
private $bbAuthor;
private $bbTitle;
private $bbImp;
function __construct($author_in, $title_in, $choice_in) {
$this->bbAuthor = $author_in;
$this->bbTitle = $title_in;
if ('STARS' == $choice_in) {
$this->bbImp = new BridgeBookStarsImp();
} else {
$this->bbImp = new BridgeBookCapsImp();
}
}
function showAuthor() {
return $this->bbImp->showAuthor($this->bbAuthor);
}
function showTitle() {
return $this->bbImp->showTitle($this->bbTitle);
}
}
class BridgeBookAuthorTitle extends BridgeBook {
function showAuthorTitle() {
return $this->showAuthor() . "'s " . $this->showTitle();
}
}
class BridgeBookTitleAuthor extends BridgeBook {
function showTitleAuthor() {
return $this->showTitle() . ' by ' . $this->showAuthor();
}
}
abstract class BridgeBookImp {
abstract function showAuthor($author);
abstract function showTitle($title);
}
class BridgeBookCapsImp extends BridgeBookImp {
function showAuthor($author_in) {
return strtoupper($author_in);
}
function showTitle($title_in) {
return strtoupper($title_in);
}
}
class BridgeBookStarsImp extends BridgeBookImp {
function showAuthor($author_in) {
return Str_replace(" ","*",$author_in);
}
function showTitle($title_in) {
return Str_replace(" ","*",$title_in);
}
}
writeln('BEGIN TESTING BRIDGE PATTERN');
writeln('');
writeln('test 1 - author title with caps');
$book = new BridgeBookAuthorTitle('Larry Truett','PHP for Cats','CAPS');
writeln($book->showAuthorTitle());
writeln('');
writeln('test 2 - author title with stars');
$book = new BridgeBookAuthorTitle('Larry Truett','PHP for Cats','STARS');
writeln($book->showAuthorTitle());
writeln('');
writeln('test 3 - title author with caps');
$book = new BridgeBookTitleAuthor('Larry Truett','PHP for Cats','CAPS');
writeln($book->showTitleAuthor());
writeln('');
writeln('test 4 - title author with stars');
$book = new BridgeBookTitleAuthor('Larry Truett','PHP for Cats','STARS');
writeln($book->showTitleAuthor());
writeln('');
writeln('END TESTING BRIDGE PATTERN');
function writeln($line_in) {
echo $line_in."<br/>";
}
?>
Sumber : https://sourcemaking.com/design_patterns
Sekian Terima kasih...