Selasa, 16 April 2013

Factory Method Pattern

,


Dengan membuat Factory Method dan mendefinisikan sebuah class interface, kita bisa men-
generate object yang dinamis sesuai kebutuhan dan implementasi yang diinginkan. Harap di-ingat lagi,
ruang lingkup dari Factory Method adalah class, Factory Method sendiri adalah class object yang static.
Contoh di bawah menggambarkan bagaimana ObjectFactory memanfaatkan class interface object menjadi lebih dinamis. Contoh lain implementasi pattern ini adalah BorderFactory atau SocketFactory yang merupakan standart package Java API.
Observer Pattern menerapkan mekanisme Publisher dan Subscriber untuk mengatur bagaimana sebuah object mengetahui perubahan state di object lainnya.
dimana kita menggunakan dan keuntungan
- menghubungkan hieraki class paralel
- sebuah class yang menginginkan subclassnya untuk menspesifikasi objek
- class tidak dapat mengantisipasi subclassnya, dimana itu dibuat
- famlily dari object butuh untuk dipisahkan menggunakan interface yang sama
- code butuh untuk berhubungan dengan interface, tidaka mengimplementasikan class
- menyembunyikan dasar class dari client
- factory method dapat di parameterisasi
- returned object dapatberupa abstarct atau konkrit object
- membuat kaitan untuk subclass lebih fleksibel dari pada membuat object secara langsung
- mengikuti aturan penamaan untuk membantu developer untuk mengubah struktur kode

contoh :
interface Shape {
public void draw();
}
class Line implements Shape {
Point x, y;
Line(Point a, Point b) {
x = a;
y = b;
}
public void draw() {
//draw a line;
}
}
class Square implements Shape {
Point start;
int width, height;
Square(Point s, int w, int h) {
start = s;
width = w;
height = h;
}
public void draw() {
//draw a square;
}
}
class Circle implements Shape {
....
}

class Painting {
Point x, y;
int width, height, radius;
Painting(Point a, Point b, int w, int h, int r) {
x = a;
y = b;
width = w;
height = h;
radius = r;
}
Shape drawLine() {
return new Line(x,y);
}
Shape drawSquare() {
return new Square(x, width, height);
}
Shape drawCircle() {
return new Circle(x, radius);
}
....
}

...
Shape pic;
Painting pt;
//initializing pt
....
if (line)
pic = pt.drawLine();
if (square)
pic = pt.drawSquare();
if (circle)
pic = pt.drawCircle();



0 komentar to “ Factory Method Pattern”

Posting Komentar