ݺߣ

ݺߣShare a Scribd company logo
Bridge tasarım deseni
Tasarım desenleri nedir?
• Deneyimli nesne yönelimli yazılım geliştiriciler tarafından
kullanılan en iyi implementasyonları temsil etmektedir.
• Yazılım geliştirme Design Pattern kavramını başlattı. Design
Patterns - Elements of Reusable Object-Oriented Software -
1994, dört yazar Erich Gamma, Richard Helm, Ralph Johnson
ve John Vlissides Design Patterns başlıklı bir kitap yayınladı.
Tasarım desenleri
Tasarım Deseni Kullanımı
• Geliştiriciler için ortak bir platform
• En iyi Implementasyonlar
• Tasarım sürecinin karmaşıklığını azaltmak
• Yeniden kullanılabilirliği
• Yeniden kullanılması direk kod değil çözüm ve stratejidir
Tasarım Deseni Türleri
• Yaratım, yapısal ve davranışsal desenler - tasarım deseni
referans kitabı Design Patterns - Elements of Reusable Object-
Oriented Software, üç kategoride sınıflandırılabilir 23 tasarım
desenleri vardır.
Yaratımsal Desenler
Tasarım Deseni Türleri
• Bu tasarım desenleri yerine doğrudan new operatörünü
kullanarak nesneleri başlatmasını yerine, yaratma mantığı
saklayarak nesneler oluşturmak için bir yol sağlar. Bu
nesneler, belirli bir kullanım durumda oluşturulacak gereken
kararlarda program daha fazla esneklik verir.
Yapısal Desenler
• Bu tasarım desenleri sınıf ve nesne kompozisyonudur.
inheritance kavramı interfaceleri oluşturmak ve yeni işlevler
elde etmek için nesneleri oluşturmak için yollar tanımlamak
için kullanılır.
Tasarım Deseni Türleri
Davranış Desenler
• Bu tasarım desenleri, özellikle nesneler arasındaki iletişim ile
ilgilidir
Tasarım Deseni Türleri
Bridge
Bridge
• Abstraction ve İmplementation bağımsız olarak değişebilmesi
için Köprü kullanılır. Bu desen aralarında bir köprü yapısını
sağlayarak implementation class ve abstract class yapısal
desen altında gelir.
Bridge
• Birkaç implementasyonlara sahip bir abstractlama ile ilgili
normal yöntem inheritance geçer. Ancak, bu kalıcı
abstractlamaya uygulanmasını bağlar. Bu her zaman
yeterince esnek değildir. Değiştirmek veya bağımsız
abstractlama ya da implementasyonları genişletmeyi
isteyebilirsiniz.
Motivasyon
• Kullanarak bağımlılığın azaldılması
• Extend edilen sub classların çoğaltıla bilmesi
• Clientden implementasyonları izole edilmesi
• Objeler arasında implementasyon paylaşımı yapıldığında
istemciden gizli kalması
Uygulanabilirlik
Örnek 1:
• Biz DrawAPI interfaceini uygulayan bir bridge implementerisi
ve concrete sınıfları RedCircle, GreenCircle olarak hareket
eden bir DrawAPI interface var. Shape abstract class ve
DrawAPI nesnesi kullanır. BridgePatternDemo, bizim demo
sınıf farklı renkteki daire çizmek için Shape sınıfını
kullanacağız.
Bridge tasarım deseninin implementasyonı
Bridge tasarım deseninin implementasyonı
Step 1
• bridge implementer interfaceinin yaratılması.
DrawAPI.java
Public interface DrawAPI
{
Public void drawCircle (int radius, int x, int y);
}
Bridge tasarım deseninin implementasyonı
Step 2
• DrawAPI interfaceini uygulayan concrete bridge implementersı sınıfların
oluşturulması.
RedCircle.java
Public class RedCircle implements DrawAP
{
@Override
Public void drawCircle (int radius, int x, int y)
{
System.out.println ("Drawing Circle [color: red, radius: " + radius + ", x: " + x + ",
" + y + "]");
}
}
Bridge tasarım deseninin implementasyonı
Step 2
GreenCircle.java
Public class GreenCircle implements DrawAPI
{
@Override
Public void drawCircle (int radius, int x, int y)
{
System.out.println ("Drawing Circle [color: green, radius: " +
radius + ", x: " + x + ", " + y + "]");
}
}
Bridge tasarım deseninin implementasyonı
Step 3
• DrawAPI interfaceini kullanarak abstact class Shape
Shape.java
Public abstract class Shape
{
Protected DrawAPI drawAPI;
Protected Shape (DrawAPI drawAPI)
{
this.drawAPI = drawAPI;
}
Public abstract void
draw ();
}
Bridge tasarım deseninin implementasyonı
Step 4
• Shape interfaceini uygulayan concrete clasını oluşturun.
Circle.java
Public class Circle extends Shape
{
Private Int x, y, radius;
Public Circle (int x, int y, int radius, DrawAPI drawAPI)
{
Super (drawAPI);
this.x = x;
this.y = y;
this.radius = radius;
}
public void draw()
{
drawAPI.drawCircle(radius,x,y);
}
}
Bridge tasarım deseninin implementasyonı
Step 5
• Farklı renkli daireler çizmek için Shape ve DrawAPI kullanılması
BridgePatternDemo.java
Public class BridgePatternDemo
{
Public static void main (String [] args)
{
Shape redCircle = new Circle (100,100, 10, new RedCircle ());
Shape greenCircle = new Circle (100,100, 10,
newGreenCircle ());
redCircle.draw ();
greenCircle.draw ();
}
}
Bridge tasarım deseninin implementasyonı
Step 6
• Çıktının doğrulanması
Drawing Circle [color: red, radius: 10, x: 100, 100]
Drawing Circle [color: green, radius: 10, x: 100, 100]
Bridge tasarım deseninin implementasyonı
Örnek 2:
Bridge tasarım deseninin implementasyonı
Örnek 3:
Sonuçlar
• Interface i ve implementasyondan ayırır.
• Derleme zamanı bağımlılıkları ortadan kaldırır.
• Gelişmiş genişletilebilirlik.
• İstemciden implementasyon ayrıntılarını gizleme.
Sadece bir implementer
• Çoklu implementerlar her zaman gerekli değildir.
• istemciden gelen implementasyon değişiklikleri gizlemek için
yararlıdır.
Implementasyonun düşünülmesi
Doğru implementer oluşturma
• Parametrelere dayalı constuctorda başlatamaz.
• Varsayılan implementasyon kullanın ve muhtemelen daha
sonra değiştirilmesi.
• AbstractFactory kullanılması
Implementasyonun düşünülmesi
Paylaşım Implementerleri
• Bir instance kullanıldığında başvuru sayısı kullanın.
Implementasyonun düşünülmesi
Abstract Factory
• birer tüm bilgi yürütücüsü oluşturmak ve kaldırmak için
kullanılır.
Adapter
• 2 ilgisiz sınıfların bir arada çalışmasını sağlamak için kullanılır.
Bridge e benzer çalışır fakat tasarım esnasında ön yapılır.
İlgili desenler
• Tasarım desenleri sadece belirli bir programlama dili (örneğin
Java ya da C ++) bazı eksik özellikleri işareti olabilir.
• Peter Norvig Tasarım Desenleri kitapta 23 desenlerin dışında
16 deseni (öncelikle C ++ odaklanmıştır) Lisp veya Dylan
(doğrudan dil desteği ile) dilinde basitleştirilmiş ya da
ortadan kalktığını göstermektedir.
Eleştiriler

More Related Content

Bridge design pattern

  • 2. Tasarım desenleri nedir? • Deneyimli nesne yönelimli yazılım geliştiriciler tarafından kullanılan en iyi implementasyonları temsil etmektedir.
  • 3. • Yazılım geliştirme Design Pattern kavramını başlattı. Design Patterns - Elements of Reusable Object-Oriented Software - 1994, dört yazar Erich Gamma, Richard Helm, Ralph Johnson ve John Vlissides Design Patterns başlıklı bir kitap yayınladı. Tasarım desenleri
  • 4. Tasarım Deseni Kullanımı • Geliştiriciler için ortak bir platform • En iyi Implementasyonlar • Tasarım sürecinin karmaşıklığını azaltmak • Yeniden kullanılabilirliği • Yeniden kullanılması direk kod değil çözüm ve stratejidir
  • 5. Tasarım Deseni Türleri • Yaratım, yapısal ve davranışsal desenler - tasarım deseni referans kitabı Design Patterns - Elements of Reusable Object- Oriented Software, üç kategoride sınıflandırılabilir 23 tasarım desenleri vardır.
  • 6. Yaratımsal Desenler Tasarım Deseni Türleri • Bu tasarım desenleri yerine doğrudan new operatörünü kullanarak nesneleri başlatmasını yerine, yaratma mantığı saklayarak nesneler oluşturmak için bir yol sağlar. Bu nesneler, belirli bir kullanım durumda oluşturulacak gereken kararlarda program daha fazla esneklik verir.
  • 7. Yapısal Desenler • Bu tasarım desenleri sınıf ve nesne kompozisyonudur. inheritance kavramı interfaceleri oluşturmak ve yeni işlevler elde etmek için nesneleri oluşturmak için yollar tanımlamak için kullanılır. Tasarım Deseni Türleri
  • 8. Davranış Desenler • Bu tasarım desenleri, özellikle nesneler arasındaki iletişim ile ilgilidir Tasarım Deseni Türleri
  • 11. • Abstraction ve İmplementation bağımsız olarak değişebilmesi için Köprü kullanılır. Bu desen aralarında bir köprü yapısını sağlayarak implementation class ve abstract class yapısal desen altında gelir. Bridge
  • 12. • Birkaç implementasyonlara sahip bir abstractlama ile ilgili normal yöntem inheritance geçer. Ancak, bu kalıcı abstractlamaya uygulanmasını bağlar. Bu her zaman yeterince esnek değildir. Değiştirmek veya bağımsız abstractlama ya da implementasyonları genişletmeyi isteyebilirsiniz. Motivasyon
  • 13. • Kullanarak bağımlılığın azaldılması • Extend edilen sub classların çoğaltıla bilmesi • Clientden implementasyonları izole edilmesi • Objeler arasında implementasyon paylaşımı yapıldığında istemciden gizli kalması Uygulanabilirlik
  • 14. Örnek 1: • Biz DrawAPI interfaceini uygulayan bir bridge implementerisi ve concrete sınıfları RedCircle, GreenCircle olarak hareket eden bir DrawAPI interface var. Shape abstract class ve DrawAPI nesnesi kullanır. BridgePatternDemo, bizim demo sınıf farklı renkteki daire çizmek için Shape sınıfını kullanacağız. Bridge tasarım deseninin implementasyonı
  • 15. Bridge tasarım deseninin implementasyonı Step 1 • bridge implementer interfaceinin yaratılması. DrawAPI.java Public interface DrawAPI { Public void drawCircle (int radius, int x, int y); }
  • 16. Bridge tasarım deseninin implementasyonı Step 2 • DrawAPI interfaceini uygulayan concrete bridge implementersı sınıfların oluşturulması. RedCircle.java Public class RedCircle implements DrawAP { @Override Public void drawCircle (int radius, int x, int y) { System.out.println ("Drawing Circle [color: red, radius: " + radius + ", x: " + x + ", " + y + "]"); } }
  • 17. Bridge tasarım deseninin implementasyonı Step 2 GreenCircle.java Public class GreenCircle implements DrawAPI { @Override Public void drawCircle (int radius, int x, int y) { System.out.println ("Drawing Circle [color: green, radius: " + radius + ", x: " + x + ", " + y + "]"); } }
  • 18. Bridge tasarım deseninin implementasyonı Step 3 • DrawAPI interfaceini kullanarak abstact class Shape Shape.java Public abstract class Shape { Protected DrawAPI drawAPI; Protected Shape (DrawAPI drawAPI) { this.drawAPI = drawAPI; } Public abstract void draw (); }
  • 19. Bridge tasarım deseninin implementasyonı Step 4 • Shape interfaceini uygulayan concrete clasını oluşturun. Circle.java Public class Circle extends Shape { Private Int x, y, radius; Public Circle (int x, int y, int radius, DrawAPI drawAPI) { Super (drawAPI); this.x = x; this.y = y; this.radius = radius; } public void draw() { drawAPI.drawCircle(radius,x,y); } }
  • 20. Bridge tasarım deseninin implementasyonı Step 5 • Farklı renkli daireler çizmek için Shape ve DrawAPI kullanılması BridgePatternDemo.java Public class BridgePatternDemo { Public static void main (String [] args) { Shape redCircle = new Circle (100,100, 10, new RedCircle ()); Shape greenCircle = new Circle (100,100, 10, newGreenCircle ()); redCircle.draw (); greenCircle.draw (); } }
  • 21. Bridge tasarım deseninin implementasyonı Step 6 • Çıktının doğrulanması Drawing Circle [color: red, radius: 10, x: 100, 100] Drawing Circle [color: green, radius: 10, x: 100, 100]
  • 22. Bridge tasarım deseninin implementasyonı Örnek 2:
  • 23. Bridge tasarım deseninin implementasyonı Örnek 3:
  • 24. Sonuçlar • Interface i ve implementasyondan ayırır. • Derleme zamanı bağımlılıkları ortadan kaldırır. • Gelişmiş genişletilebilirlik. • İstemciden implementasyon ayrıntılarını gizleme.
  • 25. Sadece bir implementer • Çoklu implementerlar her zaman gerekli değildir. • istemciden gelen implementasyon değişiklikleri gizlemek için yararlıdır. Implementasyonun düşünülmesi
  • 26. Doğru implementer oluşturma • Parametrelere dayalı constuctorda başlatamaz. • Varsayılan implementasyon kullanın ve muhtemelen daha sonra değiştirilmesi. • AbstractFactory kullanılması Implementasyonun düşünülmesi
  • 27. Paylaşım Implementerleri • Bir instance kullanıldığında başvuru sayısı kullanın. Implementasyonun düşünülmesi
  • 28. Abstract Factory • birer tüm bilgi yürütücüsü oluşturmak ve kaldırmak için kullanılır. Adapter • 2 ilgisiz sınıfların bir arada çalışmasını sağlamak için kullanılır. Bridge e benzer çalışır fakat tasarım esnasında ön yapılır. İlgili desenler
  • 29. • Tasarım desenleri sadece belirli bir programlama dili (örneğin Java ya da C ++) bazı eksik özellikleri işareti olabilir. • Peter Norvig Tasarım Desenleri kitapta 23 desenlerin dışında 16 deseni (öncelikle C ++ odaklanmıştır) Lisp veya Dylan (doğrudan dil desteği ile) dilinde basitleştirilmiş ya da ortadan kalktığını göstermektedir. Eleştiriler