C#nedir?com
 
YAZAR HAKKINDA
Tanıl Ergin
Tanıl Ergin
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
21 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: bilgileri bilmek durumda eczacilik eczane gerekli hakkinda ilgili kaliplari olacaktir. sistemi sistemin tasarim varolan yerine Yazılım Müh. Tanıl Ergin
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : Yazılım Müh.
Yayınlanma Tarihi : 28.9.2004
Okunma Sayısı : 16995
Yorum Sayısı : 1     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 21.4.2021
Turhal Temizer
Mac OS/X Removing CUDA 21.4.2021
Burak Selim Şenyurt
Tie Fighter Değil, Project Tye! 21.4.2021
Burak Selim Şenyurt
Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir? 21.4.2021
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Tasarım Kalıpları - 2, Facade
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bu tasarım kalıbını, ismini bilmeden birçok kez uygulamış olduğunuzdan eminim. Tasarım kalıplarının ilk yazısında, tasarım kalıpları hakkında genel bir bilgi vermeye çalıştık. Bundan sonraki yazılarımızda örnek kalıpları anlatmaya devam edeceğiz.

Bu bölümde, çok sık kullanılan, çok yaygın bir çözüm olan "Facade" kalıbı hakkında bilgi vereceğiz. Facade, varolan bir sistemin üstüne daha yüksek seviye bir arayüz tanımlayıp o sistemi kullanmamızı sağlar. Bu yüksek seviyeli arayüz, sistemi daha kolay kullanmamızı sağlar.

Temel olarak, bir sistemin hepsini kullanmak yerine belirli kısımlarının kullanılacağını düşünün. Bu durumda tüm fonksiyonları sağlamak gereksiz olacaktır. Ayrıca geliştirme takımına sonradan katılan kisiler, sistemi öğrenmek için aslında kullanılmayan bir sürü fonksiyon ile de uğraşacaklardır. Facade ile, istenilen basitlik ve sadelikte bir arayüz elde edilecektir.

Bu tasarım kalıbı aslında sadece yazılımlarda değil yaşamın her evresinde kullanılmaktadır. Örneğin geliştirilecek bir sistem için belirli bir sahada bilgiye sahip olunması gerekebilir. Mesela eczacılık ile ilgili web tabanli bir alışveriş sitesi sistemi geliştirdiğinizi düşünün. Bu durumda eczacılık ile ilgili bazı bilgilere ihtiyacınız olacaktır fakat tüm bilgileri bilmek gereksiz olacaktır. Örneğin bir ilacın içerigini bilmek sizin için gereksizken hangi ilaçlarin reçetesiz satilabilecegi, hangi ilaçlarin vergi oranının ne kadar olacağını bilmelisiniz. Bu durumda takımdan birini gerekli bilgileri öğrenmek için ve size bunları sunması için görevlendirirseniz, eczacılık hakkındaki tüm bilgileri tüm takımın öğrenmesi gerekmez, bu sorumlu kişi gerekli noktaları belirler ve size sunar. Geliştirme takımı da sadece bunlara bağlı kalarak sistemi geliştirir. Bu durum Facade tasarım kalıbına çok güzel bir örnek teşkil etmektedir. Eczacılık sisteminin "tüm hizmetlerini, fonksiyonlarını, kısıtlarını" bilmek yerine sizi ilgilendirecek olan, eczacılık sisteminin "alt kümesini" bilmeniz işinizi yapmaniza yardimci olacaktir. Sorumlu kisi, takim ile eczacilik sistemi arasinda bir “arayüz” olacaktir ve eczacilik sistemini kullanmaniz kolaylasacaktir.

Yukaridaki örnegin aynisi, gelistirdiginiz kod sistemleri için de tam olarak örtüsecektir.



Yukaridaki sekilde de görülecegi gibi, A, B, C, D sisteme direct olarak ulasmak yerine arayüz tarafindan onlara saglanan fonksiyonlara ulasabilmektedirler. Bunun birçok yarari vardir:

1. Sistemin kullanimi kolaylasir
2. Arayüz sayesinde sistemin kontrolü kolaylasir
3. Gerektiginde kolaylikla yeni fonksiyonlar eklenebilir ve çikarilabilir
4. Bakimi kolaylastirir
5. Alt taraftaki karmasik sistemin anlasilmasi gerekmez

KÜNYE

Isim: FACADE
Amaç: Varolan bir sistemin kullanilmasini kolaylastirmak. Kendi arayüzünüzü tanimlamak.
Problem: Varolan sistemi kullanma zorunlulgu, sistemin altkümesini kullanma zorunlulugu
Çözüm: Yeni bir arayüz saglayarak bu arayüz üzerinden kullanimin saglanmasi
Birimler: Özellesmis arayüz
Gerçeklestirim: Gereksinimleri karsilayacak seklilde yeni bir arayüz tasarla, Bu arayüzün varolan sistemi kullanmasini sagla

Örnegin, çalismakta olan bir eczane sistemi olsun, bu sistemin siniflari basitçe asagidaki gibi olsun:

 

class IlacSorgu {

public:
IlacSorgu(String IlacAd);
BaglantiYap();

}

class IlacIstek {

Public:
IlacIste(Integer IlacNo);
SiparisVer(Integer IlacNo);
SiparisIptal(Integer SiparisNo);

}

class Eczane {

Public:
Baslat();
EczaneKaydet(Integer EczNo);
SatisYap();
String EczaneAdi;

}

 

 

Yukaridaki sistemde, eczane ile ilgili çesitli isler yapmakta olan siniflar mevcuttur. Simdi biz, tüm bu islemleri yapan sistemden, kendi sistemimiz için gerekli olan islemleri yapacak olan bir “EczaneYonetim” sinifi yaratabiliriz:

 

 

Class EczaneYonetim {

public:
SistemiBaslat();
SatisYap();

};

EczaneYonetim::SistemiBaslat(String EczaneAdi)
{
Eczane::Baslat();
Eczane::EczaneKaydet(EczAdi);
}

EczaneYonetim::SatisYap(String IlacAd)
{
IlacSorgu::BaglantiYap();
IlacSorgu::IlacSorgu(IlacAd);
IlacIstek::IlacIste(IlacAd);
IlacIstek::SiparisVer(IlacAd);
}

 

Yukaridaki örnekte de gördügünüz gibi, varolan bir sisteme arayüz yapilarak geliistirecegimiz sistemde kullanilacak islemler, basitlestirildi. Bu “EczaneYonetimi” sinifi sayesinde artik satis yapmak isteyen bir sinifin eczane ile ilgili diger sinifilari bilmesine gerek kalmadi. Sadece “SatisYap” metdounu çagirarak bir satis islemini yapabilmektedir. IlacSorgu, IlacIstek siniflarinin ne yaptigi ile hiçbir bilgiye ihtiyaci yoktur. Hatta boyle siniflar oldugunu bile bilmesine gerek yoktur.


Makale:
Tasarım Kalıpları - 2, Facade Yazılım Mühendisliği Tanıl Ergin
  • Yazılan Yorumlar
  • Yorum Yaz
EYL
29
2004
Tasarim kaliplarinin örneklerle özet bir sekilde anlatmaniz bence cok yararli oluyor..Cok güzel bir makale elinize saglik..Umarim devami en kisa zamanda gelir :)
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor