SlideShare a Scribd company logo
1 of 29
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

What's hot

Architecture vs Design
Architecture vs DesignArchitecture vs Design
Architecture vs DesignLuc Trudeau
 
Flyway _ A Database Version Management Tool
Flyway _ A Database Version Management ToolFlyway _ A Database Version Management Tool
Flyway _ A Database Version Management ToolKnoldus Inc.
 
[Webinar]: Working with Reactive Spring
[Webinar]: Working with Reactive Spring[Webinar]: Working with Reactive Spring
[Webinar]: Working with Reactive SpringKnoldus Inc.
 
Interaction overview and Profile UML Diagrams
Interaction overview and Profile UML DiagramsInteraction overview and Profile UML Diagrams
Interaction overview and Profile UML DiagramsHusnain Safdar
 
The State Design Pattern
The State Design PatternThe State Design Pattern
The State Design PatternJosh Candish
 
Pressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelsPressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelssaurabhshertukde
 
Uml Activity Diagram
Uml Activity DiagramUml Activity Diagram
Uml Activity DiagramNiloy Rocker
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)Valerio Radice
 
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...VMware Tanzu
 
Deployment Diagram Example Templates
Deployment Diagram Example TemplatesDeployment Diagram Example Templates
Deployment Diagram Example TemplatesCreately
 
Circuit Breaker Pattern
Circuit Breaker PatternCircuit Breaker Pattern
Circuit Breaker PatternVikash Kodati
 
PATTERNS03 - Behavioural Design Patterns
PATTERNS03 - Behavioural Design PatternsPATTERNS03 - Behavioural Design Patterns
PATTERNS03 - Behavioural Design PatternsMichael Heron
 
Introduction to Java 11
Introduction to Java 11 Introduction to Java 11
Introduction to Java 11 Knoldus Inc.
 

What's hot (20)

Architecture vs Design
Architecture vs DesignArchitecture vs Design
Architecture vs Design
 
ERD(2).ppt
ERD(2).pptERD(2).ppt
ERD(2).ppt
 
Uml class-diagram
Uml class-diagramUml class-diagram
Uml class-diagram
 
Bridge pattern
Bridge patternBridge pattern
Bridge pattern
 
Flyway _ A Database Version Management Tool
Flyway _ A Database Version Management ToolFlyway _ A Database Version Management Tool
Flyway _ A Database Version Management Tool
 
[Webinar]: Working with Reactive Spring
[Webinar]: Working with Reactive Spring[Webinar]: Working with Reactive Spring
[Webinar]: Working with Reactive Spring
 
Interaction overview and Profile UML Diagrams
Interaction overview and Profile UML DiagramsInteraction overview and Profile UML Diagrams
Interaction overview and Profile UML Diagrams
 
The State Design Pattern
The State Design PatternThe State Design Pattern
The State Design Pattern
 
Pressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelsPressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-models
 
JDBC-Introduction
JDBC-IntroductionJDBC-Introduction
JDBC-Introduction
 
Uml Activity Diagram
Uml Activity DiagramUml Activity Diagram
Uml Activity Diagram
 
GraphQL
GraphQLGraphQL
GraphQL
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)
 
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
 
Deployment Diagram Example Templates
Deployment Diagram Example TemplatesDeployment Diagram Example Templates
Deployment Diagram Example Templates
 
Software design
Software designSoftware design
Software design
 
Adapter pattern
Adapter patternAdapter pattern
Adapter pattern
 
Circuit Breaker Pattern
Circuit Breaker PatternCircuit Breaker Pattern
Circuit Breaker Pattern
 
PATTERNS03 - Behavioural Design Patterns
PATTERNS03 - Behavioural Design PatternsPATTERNS03 - Behavioural Design Patterns
PATTERNS03 - Behavioural Design Patterns
 
Introduction to Java 11
Introduction to Java 11 Introduction to Java 11
Introduction to Java 11
 

Viewers also liked

Design Pattern lecture 3
Design Pattern lecture 3Design Pattern lecture 3
Design Pattern lecture 3Julie Iskander
 
20120420 - Design pattern bridge
20120420 - Design pattern bridge20120420 - Design pattern bridge
20120420 - Design pattern bridgeLearningTech
 
Bilge adam beşiktas şube ceh 1. introduction
Bilge adam beşiktas şube ceh 1. introductionBilge adam beşiktas şube ceh 1. introduction
Bilge adam beşiktas şube ceh 1. introductionEPICROUTERS
 
Bilge adam beşiktas şube ceh 2 hacking
Bilge adam beşiktas şube ceh 2  hackingBilge adam beşiktas şube ceh 2  hacking
Bilge adam beşiktas şube ceh 2 hackingEPICROUTERS
 
Atilim üniversitesi ceh sunum
Atilim üniversitesi ceh sunumAtilim üniversitesi ceh sunum
Atilim üniversitesi ceh sunumEPICROUTERS
 
Web Guvenligi Konferansi - Web Hacking Yontemleri
Web Guvenligi Konferansi - Web Hacking YontemleriWeb Guvenligi Konferansi - Web Hacking Yontemleri
Web Guvenligi Konferansi - Web Hacking YontemleriEPICROUTERS
 
Gömülü Cihaz Güvenliği ve Zollard Botnet Analizi
Gömülü Cihaz Güvenliği ve Zollard Botnet AnaliziGömülü Cihaz Güvenliği ve Zollard Botnet Analizi
Gömülü Cihaz Güvenliği ve Zollard Botnet AnaliziIbrahim Baliç
 
Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)
Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)
Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)Mehmet Kelepçe
 
Tersine Mühendislik 101
Tersine Mühendislik 101Tersine Mühendislik 101
Tersine Mühendislik 101Fatih Erdoğan
 
Zafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleriZafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleriEPICROUTERS
 
Yeni Nesil Sosyal Mühendislik Saldırıları ve Siber İstihbarat
Yeni Nesil Sosyal Mühendislik Saldırıları ve Siber İstihbaratYeni Nesil Sosyal Mühendislik Saldırıları ve Siber İstihbarat
Yeni Nesil Sosyal Mühendislik Saldırıları ve Siber İstihbaratSeyfullah KILIÇ
 
Yapılan ağ saldırılarına karşı önlemler
Yapılan ağ saldırılarına karşı önlemlerYapılan ağ saldırılarına karşı önlemler
Yapılan ağ saldırılarına karşı önlemlerIlkin Azizov
 
pentest mobile app issue
pentest mobile app issuepentest mobile app issue
pentest mobile app issueshekar M
 

Viewers also liked (20)

Design Pattern lecture 3
Design Pattern lecture 3Design Pattern lecture 3
Design Pattern lecture 3
 
Bridge Pattern Derek Weeks
Bridge Pattern   Derek WeeksBridge Pattern   Derek Weeks
Bridge Pattern Derek Weeks
 
Bridge Pattern
Bridge PatternBridge Pattern
Bridge Pattern
 
20120420 - Design pattern bridge
20120420 - Design pattern bridge20120420 - Design pattern bridge
20120420 - Design pattern bridge
 
Bilge adam beşiktas şube ceh 1. introduction
Bilge adam beşiktas şube ceh 1. introductionBilge adam beşiktas şube ceh 1. introduction
Bilge adam beşiktas şube ceh 1. introduction
 
Bilge adam beşiktas şube ceh 2 hacking
Bilge adam beşiktas şube ceh 2  hackingBilge adam beşiktas şube ceh 2  hacking
Bilge adam beşiktas şube ceh 2 hacking
 
Atilim üniversitesi ceh sunum
Atilim üniversitesi ceh sunumAtilim üniversitesi ceh sunum
Atilim üniversitesi ceh sunum
 
Web Guvenligi Konferansi - Web Hacking Yontemleri
Web Guvenligi Konferansi - Web Hacking YontemleriWeb Guvenligi Konferansi - Web Hacking Yontemleri
Web Guvenligi Konferansi - Web Hacking Yontemleri
 
Gömülü Cihaz Güvenliği ve Zollard Botnet Analizi
Gömülü Cihaz Güvenliği ve Zollard Botnet AnaliziGömülü Cihaz Güvenliği ve Zollard Botnet Analizi
Gömülü Cihaz Güvenliği ve Zollard Botnet Analizi
 
Web Application Testing
Web Application Testing Web Application Testing
Web Application Testing
 
DNS Güvenliği
DNS GüvenliğiDNS Güvenliği
DNS Güvenliği
 
Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)
Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)
Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)
 
Tersine Mühendislik 101
Tersine Mühendislik 101Tersine Mühendislik 101
Tersine Mühendislik 101
 
Zafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleriZafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleri
 
Some Kitapçık
Some KitapçıkSome Kitapçık
Some Kitapçık
 
Yeni Nesil Sosyal Mühendislik Saldırıları ve Siber İstihbarat
Yeni Nesil Sosyal Mühendislik Saldırıları ve Siber İstihbaratYeni Nesil Sosyal Mühendislik Saldırıları ve Siber İstihbarat
Yeni Nesil Sosyal Mühendislik Saldırıları ve Siber İstihbarat
 
Yapılan ağ saldırılarına karşı önlemler
Yapılan ağ saldırılarına karşı önlemlerYapılan ağ saldırılarına karşı önlemler
Yapılan ağ saldırılarına karşı önlemler
 
pentest mobile app issue
pentest mobile app issuepentest mobile app issue
pentest mobile app issue
 
Network Dersleri2
Network Dersleri2Network Dersleri2
Network Dersleri2
 
Bridge Design Pattern
Bridge Design PatternBridge Design Pattern
Bridge Design Pattern
 

Similar to Bridge design pattern

Sap2000 kursu-cekmekoy
Sap2000 kursu-cekmekoySap2000 kursu-cekmekoy
Sap2000 kursu-cekmekoysersld95
 
Xsteel odev-sitesi
Xsteel odev-sitesiXsteel odev-sitesi
Xsteel odev-sitesisersld85
 
Xsteel kursu-ucretleri
Xsteel kursu-ucretleriXsteel kursu-ucretleri
Xsteel kursu-ucretlerisersld85
 
Xsteel egitimi-cekmekoy
Xsteel egitimi-cekmekoyXsteel egitimi-cekmekoy
Xsteel egitimi-cekmekoysersld85
 
Xsteel semineri
Xsteel semineriXsteel semineri
Xsteel seminerisersld85
 
Xsteel dokumani
Xsteel dokumaniXsteel dokumani
Xsteel dokumanisersld85
 
Sap2000 kursu-silivri
Sap2000 kursu-silivriSap2000 kursu-silivri
Sap2000 kursu-silivrisersld95
 
Sap2000 kursu-bagcilar
Sap2000 kursu-bagcilarSap2000 kursu-bagcilar
Sap2000 kursu-bagcilarsersld95
 
C++ projeleri
C++ projeleriC++ projeleri
C++ projelerisersld30
 
Sap2000 kursu-catalca
Sap2000 kursu-catalcaSap2000 kursu-catalca
Sap2000 kursu-catalcasersld95
 
Xsteel projeleri
Xsteel projeleriXsteel projeleri
Xsteel projelerisersld85
 
Xsteel danismani
Xsteel danismaniXsteel danismani
Xsteel danismanisersld85
 
Sap2000 kursu-buyukcekmece
Sap2000 kursu-buyukcekmeceSap2000 kursu-buyukcekmece
Sap2000 kursu-buyukcekmecesersld95
 
Sap2000 kursu-kagithane
Sap2000 kursu-kagithaneSap2000 kursu-kagithane
Sap2000 kursu-kagithanesersld95
 
Xsteel cizimi
Xsteel cizimiXsteel cizimi
Xsteel cizimisersld85
 
Xsteel ornegi
Xsteel ornegiXsteel ornegi
Xsteel ornegisersld85
 
Sap2000 kursu-avcilar
Sap2000 kursu-avcilarSap2000 kursu-avcilar
Sap2000 kursu-avcilarsersld95
 

Similar to Bridge design pattern (20)

Sap2000 kursu-cekmekoy
Sap2000 kursu-cekmekoySap2000 kursu-cekmekoy
Sap2000 kursu-cekmekoy
 
Xsteel odev-sitesi
Xsteel odev-sitesiXsteel odev-sitesi
Xsteel odev-sitesi
 
Xsteel kursu-ucretleri
Xsteel kursu-ucretleriXsteel kursu-ucretleri
Xsteel kursu-ucretleri
 
Xsteel egitimi-cekmekoy
Xsteel egitimi-cekmekoyXsteel egitimi-cekmekoy
Xsteel egitimi-cekmekoy
 
Xsteel semineri
Xsteel semineriXsteel semineri
Xsteel semineri
 
Xsteel dokumani
Xsteel dokumaniXsteel dokumani
Xsteel dokumani
 
Sap2000 kursu-silivri
Sap2000 kursu-silivriSap2000 kursu-silivri
Sap2000 kursu-silivri
 
Sap2000 kursu-bagcilar
Sap2000 kursu-bagcilarSap2000 kursu-bagcilar
Sap2000 kursu-bagcilar
 
Design Patterns in PHP
Design Patterns in PHPDesign Patterns in PHP
Design Patterns in PHP
 
C++ proje
C++ projeC++ proje
C++ proje
 
Wireframing Sunum
Wireframing SunumWireframing Sunum
Wireframing Sunum
 
C++ projeleri
C++ projeleriC++ projeleri
C++ projeleri
 
Sap2000 kursu-catalca
Sap2000 kursu-catalcaSap2000 kursu-catalca
Sap2000 kursu-catalca
 
Xsteel projeleri
Xsteel projeleriXsteel projeleri
Xsteel projeleri
 
Xsteel danismani
Xsteel danismaniXsteel danismani
Xsteel danismani
 
Sap2000 kursu-buyukcekmece
Sap2000 kursu-buyukcekmeceSap2000 kursu-buyukcekmece
Sap2000 kursu-buyukcekmece
 
Sap2000 kursu-kagithane
Sap2000 kursu-kagithaneSap2000 kursu-kagithane
Sap2000 kursu-kagithane
 
Xsteel cizimi
Xsteel cizimiXsteel cizimi
Xsteel cizimi
 
Xsteel ornegi
Xsteel ornegiXsteel ornegi
Xsteel ornegi
 
Sap2000 kursu-avcilar
Sap2000 kursu-avcilarSap2000 kursu-avcilar
Sap2000 kursu-avcilar
 

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