Saturday, November 26, 2016

Design Pattern - Abstract Factory

Abstract Factory patterns bekerja dalam super-factory yang membuat factory lainnya. factory ini juga biasa disebut factory of factories. Design pattern type ini dibuat dari creational pattern sebagaimana pattern memberikan salah satu cara terbaik untuk membuat suatu object.

dalam Abstract Factory pattern, sebuah interface bertanggung jawab untuk membuat factory yang berkaitan dengan object tanpa menspesifikasikan class mereka secara jelas. setiap factory yang dibuat dapat memberikan object sebanyak Factory pattern.

Provides an interface for creating families of related or dependent objects without specifying their concrete classes.
------------------------------------------------------------------------------------------------------------
Menyediadakan interface untuk membuat rangkaian family(keluarga) yang terkait atau bergantung object tanpa menspesifikasikan concrete class.

Implementasi
Dalam implementasi ini saya menggunakan BlueJ.
disini kita akan membuat Shape dan Color Interface dan concrete class yang mengimplementasikan interface tersebut.
kita akan membuat abstract factory class - AbstractFactory. Factory classes - ShapeFactory dan ColorFactory yang didefinisikan masing-masing sebagai extend dari AbstractFactory. Factory creator/generator class FactoryProducer akan dibuat.

AbstractFactoryPatternDemo, demo class kita akan menggunakan FactoryProducer untuk mendapatkan AbstractFactory object. yang akan memberikan infromasi (CIRCLE/ RECTANGLE/ SQUARE for shape) kepada  AbstractFactory untuk mendapatkan type object. yang dibutuhkan. yang juga akan memberikan informasi (RED/ GREEN/ BLUE untuk Color) kepada AbstractFactory untuk mendapatkan type dari object yang dibutuhkan. berikut diagram UML-nya



Step 1
buatlah interface Shape

Shape.java
Step 2
buatlah concrete class yang mengimplementasikan Shape interface.

Rectangle.java


Square.java


Circle.java


Step 3
buatlah interface untuk Colors

Color.java
Step 4
buatlah concrete class yang mengimplementasikan Colors interface

Red.java


Green.java
Blue.java


Step 5
buatlah abstract class untuk mendapatkan factories untuk color dan shape objects.

AbstractFactory.java
Step 6
buatlah Factory class extend dari AbstracFactory untuk membuat object dari concrete class berdasarkan informasi yang diberikan.

ShapeFactory.java

ColorFactory.java
Step 7
buatlah Factory generator/producer class untuk mendapatkan factory dengan cara passing informasi seperti color atau shape.

FactoryProducer.java


Step 8
gunakan FactoryProducer untuk mendapatkan AbstractFactory yang merupakan syarat untuk mendapatkan factory dari concrete class dengan cara passing infromasi seperti type.

AbstractFactoryPatternDemo.java


Step 9
jalankan program dan cek outputnya


Impelementasi di industri
salah satu implementasinya adalah UI toolkits baik dalam windows, mac dan linux. UI composite seperti window, buttons, dan textfields yang disediakan di dalam widget API seperti SWT.

Referensi:
https://www.tutorialspoint.com/design_pattern/abstract_factory_pattern.htm
https://dzone.com/articles/design-patterns-abstract-factory

No comments:

Post a Comment