Profesyonel Tasarım Desenleri ; Factory Method


2169 Mesaj
Bugün; 17:12:09

Profesyonel Tasarım Desenleri ; Factory Method

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication13
{
//Fabrika yazılım kalıbında amaç gerektiği anda gerekli sınıf nesnemizi oluşturmaktır.Ben burda soyut sınıf kullandım arayüzde olabilir…
//Soyut sınıfımızdaki Metedumuzun sipariş veridiğimiz bölümlere göre değiştiğini varsayarak abstract olarak işaretledik…

abstract class Siparisver
{
internal string Departman;
internal string Isim;
internal string Adres;
internal string Siparis;

internal abstract void sMt();
}

//Madem siparişlerde istenenler belli soyut sınıfla temel işlemleri tanımlarız ,boylece turemis sınıflar kolayca eklenir ve bolumler (ürünler) gelismeye
// esnek bir yapı olusturur.OOP da sınıflar gelismeye acık degisime kapalı olmalı…

class Kirtasiye : Siparisver
{

string _departman;
string _isim;
string _adres;
string _siparis;

internal Kirtasiye()
{ }

internal Kirtasiye(Siparisver sp)
{
_departman = sp.Departman;
_isim = sp.Isim;
_adres = sp.Adres;
_siparis = sp.Siparis;
}

internal override void sMt()
{
Console.WriteLine(_departman+” Siparisi Oluştu…”);
}

}

class Elektronik :Siparisver
{
string _departman;
string _isim;
string _adres;
string _siparis;

internal Elektronik()
{

}

internal Elektronik(Siparisver sp)
{
_departman = sp.Departman;
_isim = sp.Isim;
_adres = sp.Adres;
_siparis = sp.Siparis;

}

internal override void sMt()
{
Console.WriteLine(_departman+” Siparisi Oluştu…”);
}

}

enum Bolum
{
Kirtasiye=1,
Bilgisayar=2,
Tanimsiz=3

}

//İs akısımızdaki temel işlevselliği üstelenen asıl sınıfımız icin bir arayuz olusturuyoruz boylece asıl fabrika sınıfımız icin esneklik saglıyoruz
//siparis bilgileri ve departman kodu da siparisi hazırlamak icin gerekli…

interface IFabrika
{

Siparisver SiparisYap(Siparisver spv,Bolum bl);
}

//Zurnanın deligi burası ! Herseyi ustlenen somut sınıfımız yani fabrikamız…
//hem soyut fabrikamız hemde somut olanı temel siparis sınıfı donduruyor boylece departmanlarımız ne olursa olsun temel siparis islemlerini bize
// sağlıyor…
//Yapılıcak tek sey verilen siparis bilgileri ve departman kodu ile, ilgili departmanın kendi siparisini hazırlaması (ASIL Hedef olan ilgili somut urun nesnesinin
//ilgili sınıfca hazırlanması)
class SiparisFabrika : IFabrika
{

public Siparisver SiparisYap(Siparisver spv, Bolum bl)
{

switch (bl)
{
case Bolum.Kirtasiye:
return new Kirtasiye(spv);
case Bolum.Bilgisayar:
return new Elektronik(spv);
default: throw new ArgumentException(“Bu Bolum Henuz Yok…”);

}
}

}

class Program
{
static void Main(string[] args)
{
//Temel siparis bilgilerini hazırlıyoruz ,her sınıf kendi icinde bunu özellestiricektir…
Siparisver sp=new Kirtasiye();
sp.Adres=”İzmir”;
sp.Isim=”Ayhan eren”;
sp.Departman=”Kirtasiye”;
sp.Siparis=”^renkli kalem”;

SiparisFabrika sp1 = new SiparisFabrika();
try
{
var sps= sp1.SiparisYap(sp, Bolum.Kirtasiye);

sps.sMt();
}
catch (ArgumentException e)
{
Console.WriteLine(e.Message);

}

}
}
}
//İşin özü;Fabric yonteminde urun adı verilen bizdeki karsılıgı departmanlar olan urunler icin icin yine Fabric yonteminde karsılıgı Fabrika olan sınıf içinde ürün nesnelerini her istedigimizde hazırlıyoruz…

Reklamlar

Fikriniz varmış,malınız gibi paylaşınız...

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s