Abstract Factory Pattern desain perangkat lunak pola yang menyediakan cara untuk
merangkum sekelompok pabrik individu yang memiliki tema umum.
Dalam penggunaan
normal, perangkat lunak klien menciptakan implementasi konkret dari pabrik
abstrak (Abstrack Factory) dan kemudian menggunakan antarmuka generik untuk
membuat objek konkret yang merupakan bagian dari tema. Klien tidak tahu (atau
peduli) yang objek konkret karena mendapat dari masing-masing pabrik internal
yang karena hanya menggunakan antarmuka generik dari produk mereka. Pola ini
memisahkan rincian pelaksanaan satu set objek dari penggunaan umum mereka.Inti dari metode Pola Abstrak adalah untuk “Menyediakan sebuah antarmuka untuk menciptakan keluarga obyek terkait atau tergantung tanpa menentukan kelas beton mereka”.
Prinsip dasar dari Abstract Factory
pattern adalah:
1. Terdapat kelas Abstract Factory (sebuah interface), dimana Abstract Factory merupakan sebuah interface yang mendefinisikan bagaimana cara untuk, membuat objek dari Abstract Product. Intent dari Abstract Factroy adalah menciptakan family dari objek yang berkaitan tanpa harus bergantung pada concrete class-nya.
2. Terdapat kelas Concrete Factory, dimana kelas ini akan mengimplementasikan semua metode pada AbstractFactory untuk membuat objek dari concrete Product.
3. Terdapat kelas Abstract Product, dimana kelas ini merupakan sebuah interface untuk mendefinisikan tipe dari masing-masing objek produk.
4. Terdapat kelas Product, merupakan kelas yang akan mengimplementasikan semua metode pada AbstractProduct.
5. Terdapat Client, adalah kelas yang akan terhubung dengan kelas Abstrac tFactory dan Abstract Product.
1. Terdapat kelas Abstract Factory (sebuah interface), dimana Abstract Factory merupakan sebuah interface yang mendefinisikan bagaimana cara untuk, membuat objek dari Abstract Product. Intent dari Abstract Factroy adalah menciptakan family dari objek yang berkaitan tanpa harus bergantung pada concrete class-nya.
2. Terdapat kelas Concrete Factory, dimana kelas ini akan mengimplementasikan semua metode pada AbstractFactory untuk membuat objek dari concrete Product.
3. Terdapat kelas Abstract Product, dimana kelas ini merupakan sebuah interface untuk mendefinisikan tipe dari masing-masing objek produk.
4. Terdapat kelas Product, merupakan kelas yang akan mengimplementasikan semua metode pada AbstractProduct.
5. Terdapat Client, adalah kelas yang akan terhubung dengan kelas Abstrac tFactory dan Abstract Product.
contoh :
using System;
namespace abstrakFactory
{
abstract class Universitas
{
public abstract Universitas_A
Pake_Nama();
public abstract Universitas_B
Pake_Nick();
}
class Universitas_Satu
: Universitas
{
public override Universitas_A
Pake_Nama()
{
return new Nama_RitaArisKurniasari();
}
public override Universitas_B
Pake_Nick();
{
return new Nick_Rita();
}
}
class Universitas_Dua
: Universitas
{
public override Universitas_A
Pake_Nama()
{
return new Nama_DiaWahyuningsih();
}
public override Universitas_B
Pake_Nick()
{
return new Nick_Dia();
}
}
abstract class Universitas_A
{}
abstract class Universitas_B
{
public abstract void Interact(Universitas_A
a);
}
class Nama_RitaArisKurniasari
: Universitas_A{}
class Nick_Rita
: Universitas_B
{
public override void Interact(Universitas_A
a)
{
Console.WriteLine();
Console.WriteLine("UNIVERSITAS
A");
Console.WriteLine("
"+this.GetType().Name);
Console.WriteLine("
&& ");
Console.WriteLine("
"+a.GetType().Name);
}
}
class Nama_DiaWahyuningsih
: Universitas_A{}
class Nick_Dia
: Universitas_B
{
public override void Interact(Universitas_A
a)
{
Console.WriteLine();
Console.WriteLine("UNIVERSITAS
B");
Console.WriteLine("
"+this.GetType().Name);
Console.WriteLine("
&& ");
Console.WriteLine("
"+a.GetType().Name);
}
}
class Atas
{
private Universitas_A
Pake_Nama;
private Universitas_B
Pake_Nick;
public Atas(Universitas
aa)
{
Universitas_B
= aa.Pake_Nick();
Universitas_A
= aa.Pake_Nama();
}
public void Eksekusi()
{
Universitas_B.Interact(Universitas_A);
}
}
class Program
{
public static void Main(string[]
args)
{
Universitas
satu = new Universitas_Satu();
Atas
x1 = new Atas(satu);
x1.Eksekusi();
Universitas
dua = new Universitas_Dua();
Atas
x2 = new Atas(dua);
x2.Eksekusi();
Console.WriteLine();
Console.Write("Press
any key to continue . . . ");
Console.ReadKey(true);
}
}
}
No comments:
Post a Comment