Yazılım geliştirmede modeller: yapının model 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ç
kullanım durumu
Facade
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
faydalar
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
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

Facade
- Kolaylaştırılmış arayüz sunar
- İstekleri alt sistemlere devretme
- Özelliği uygula
- cephe hakkında bilgim yok
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.
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.
- 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.
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