Yazılım geliştirmede modeller: yapının model cephesi

Adanali

Active member
Yazılım geliştirmede modeller: yapının model cephesi


  1. Yazılım geliştirmede kalıp: yapı kalıbının cephesi

Kalıplar, modern yazılım geliştirmede önemli bir soyutlamadır. İyi tanımlanmış terminoloji, açık belgeler sunar ve en iyisinden öğrenirler. Desen serimde öne çıkardığım “Design Patterns: Elements of Reusable Object-Oriented Software” (kısaca Design Patterns) adlı klasik kitap 23 desen içeriyor. Cephe yapısal bir modeldir. ve tek bir amacı vardır: karmaşık bir sisteme basitleştirilmiş bir arayüz sağlamak.








Bir cephe, alt sistemin kullanımını kolaylaştıran üst düzey bir arayüzü tanımlar. Üst düzey arabirimin amacı, karmaşık sistemin tüm kullanım durumlarını desteklemek değil, yalnızca en önemlilerini desteklemektir. Basitleştirilmiş arayüz cephesine rağmen, karmaşık sistemi doğrudan kullanmak genellikle mümkündür.

Cephe, katmanları tanıtarak karmaşık sistemleri birbirinden ayırmak için ideal bir başlangıç noktasıdır. Ayrıca eski arayüzden kurtulmak için bir başlangıç noktası olarak kullanılabilir.

İşte gerçekler:

cephe


amaç

  • Bir dizi arabirime akıcı bir arabirim sağlar

kullanım durumu

  • Karmaşık bir sisteme basitleştirilmiş erişim
  • Karmaşık bir sistem, cepheden ayrılmış birçok bağımlılık içerir.
  • karmaşık bir sistem içinde katmanların tanıtılması; katman, karmaşık sistemi ayırmaya yardımcı olur
çerçeve










Facade

  • Kolaylaştırılmış arayüz sunar
  • İstekleri alt sistemlere devretme
Package

  • Özelliği uygula
  • cephe hakkında bilgim yok
misal


Aşağıdaki örnek, C++Programming: code pattern design wiki kitabından alınmıştır.


// from https://en.wikibooks.org/wiki/C++_Programming/Code/
Design_Patterns#Facade

#include <string>
#include <iostream>

using namespace std;

class Alarm // (2)
{
public:
void alarmOn()
{
cout << "Alarm is on and house is secured"<<endl;
}

void alarmOff()
{
cout << "Alarm is off and you can go into the house"<<endl;
}
};

class Ac // (3)
{
public:
void acOn()
{
cout << "Ac is on"<<endl;
}

void acOff()
{
cout << "AC is off"<<endl;
}
};

class Tv // (4)
{
public:
void tvOn()
{
cout << "Tv is on"<<endl;
}

void tvOff()
{
cout << "TV is off"<<endl;
}
};

class HouseFacade // (1)
{
Alarm alarm;
Ac ac;
Tv tv;

public:
HouseFacade(){}

void goToWork() // (5)
{
ac.acOff();
tv.tvOff();
alarm.alarmOn();
}

void comeHome() // (6)
{
alarm.alarmOff();
ac.acOn();
tv.tvOn();
}
};

int main()
{
HouseFacade hf;

// Rather than calling 100 different on and off functions
// thanks to facade I only have 2 functions...
hf.goToWork();
hf.comeHome();
}


Sınıf HouseFacade (1) sınıfların kullanımını basitleştirir Alarm, Ac Ve TV (2’den 4’e kadar). Basitleştirilmiş arabirim, iki üye işlevden oluşur goToWork (5) ve comeHome (6). Her iki üye işlev de yalnızca orijinal arabirimin temel üye işlevlerini kapsamakla kalmaz, aynı zamanda üye işlevlerin doğru sırada çağrılmasını da sağlar.

Son olarak programın çıktısı şu şekildedir:








Cephe muhtemelen en sık kullanılan tasarım modelidir.

bilinen kullanımlar


Genel olarak cephe, bir işletim sistemi çağrısını tetikleyen bir işlev çağrılırken kullanılır. İşte bazı örnekler:

İlgili modeller

  • Adapter modeli mevcut bir arabirimi uyarlarken, Façade yeni ve basitleştirilmiş bir arabirim oluşturur.
  • Soyut bir fabrika, bir alt sistemi şeffaf bir şekilde soyutlamanın alternatif bir yoludur.
  • Arabulucu modeli, nesneler arasındaki organizasyonu koordine eder, ancak cephe, yeni, kolaylaştırılmış bir arayüz oluşturur.
  • Singleton modeli, karmaşık bir alt sisteme tek bir giriş noktası olarak hizmet edebilir.
Avantajlar ve dezavantajlar


faydalar

  • Kodun karmaşıklığı kullanıcıdan gizlenebilir.
  • Karmaşık sistemin kötüye kullanımı büyük ölçüde azaltıldı: “Arayüzlerin doğru kullanımı kolay, yanlış kullanımı zor hale getirin.Scott Meyer’in “En Önemli Tasarım Yönergesi?” adlı makalesinde.
  • Kullanıcılar yalnızca cepheye bağlı olduğundan, karmaşık bir sistemi başka bir platforma taşımayı kolaylaştırır.
Dezavantajları

  • Bir cephenin çok fazla sorumluluğu olabilir ve gittikçe daha fazla Tanrı Nesnesi anti-kalıpına dönüşebilir.
  • Cephe, Singleton modeline oldukça benzer. Her ikisi de karmaşık bir sisteme tek bir giriş noktası sağlar. Sonuç olarak, Singleton modelinin artıları ve eksileri Cephe modeli için de geçerlidir. Singleton kalıbının artıları ve eksileri hakkında daha fazla bilgiyi “Yazılım Geliştirmede Kalıplar: Tekton Kalıbının Artıları ve Eksileri” başlıklı son makalemde okuyabilirsiniz.
Sıradaki ne?


Bir sonraki makalemde, Design Patterns: Elements of Reusable Object-Oriented Software: the proxy pattern adlı kitaptan kalan yapısal modeli detaylandıracağım. Proxy modeli, başka bir nesneye erişmek için yer tutucu olarak kullanılır.


()



Haberin Sonu
 
Üst