• Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim
KodEduKodEdu
  • Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim

Dekoratör Tasarım Kalıbı

  • Posted by Rahman Usta
  • Categories backend, Genel, Uncategorized, Yazılar, Yazılım
  • Date 15 Mayıs 2012

Merhaba arkadaşlar;

Bugün sizlerle Dekoratör Tasarım Kalıbından (Decorator Design Pattern) bahsetmek istiyorum.

Senaryo : Bir elektronik dağıtım firması (Örneğin BestBuy), E-kitap işine girmek istiyor. Piyasada çeşitli çeşitli E-kitap ürünleri var. Örneğin benimde kullandığım Amazon firmasının ürünü Kindle.

Bu elektronik dağıtım firması, Amazon firmasından aldığı ürünleri satmak üzere bir uygulama geliştirmek istiyor.

Amaç :  Kindle türleri ve türlere ait farklı fiyat aralıklarında bulunan ürünleri, sonradan eklenen yeni ürünlere ve özelliklere göre proje yapısını bozmadan  genişletebilir yapmak.

İlkel Çözüm : Örneğin elimizde şu Kindle ürün ve özellikleri olsun ;

  • KindleTouch (Özelliksiz)
  • KindleTouchWithAds (Reklamlı)
  • KindleTouchWithWifi (Kablosuz)

BestBuy şirketinden bir yazılım geliştirici yukarıdaki modeli diğer yazılım geliştiricilere sunuyor. Arkadaşlarından birisi ona  şu soruyu yöneltiyor.

Soru : Peki, Amazon firması Reklamlı ve Kablosuz özelliklerini ihtiva eden yeni bir ürün çıkartırsa ne olacak??

Yanıt : Eee KindleTouchWithAdsAndWifi diye bir implementasyon daha oluştururuz.

Soru : Peki o zaman, KindleTouchWithAds ve KindleTouchWithWifi sınıfları içinde gerekli yordamlarımız varken neden yeni bir implementasyon oluşturalım ki??

Yanıt : Eee o zaman, iki sınıftan birden miras alalım!!

Soru : E Java çoklu kalıtıma izin vermiyor ki!!

Yanıt : Peki o  zaman ne yapmalı??

Tasarım kalıplarıyla içli dışlı bir yazılım geliştirici cevap veriyor; Ben Decorator Tasarım Kalıbı diye birşey duymuştum. Sanırım onun ile bu işi halledebiliriz.

Doğru Çözüm :

Dekoratör Tasarım Kalıbı sorunumuz için tam biçilmiş kaftan. İstendiği takdirde yeni bir ürün ve özellik proje yapımıza eklenebiliyor. Ayrıca farklı özellikler Decorator soyut sınıf üzerinden geliştirilebiliyor. İlkel çözümde genişleme yalnızca kalıtım mekanizmasıyla çözülmeye çalışılırken, doğru çözümümüzde kompozisyon yöntemiyle Ebook nesnelerimizi mevcut özelliğimizle sarmalayarak gerçekleştiriyoruz. Daha iyi anlaşılması bakımıdan lütfen kaynak kodları inceleyiniz.

Tekrar görüşmek dileğiyle..

  • Share:
author avatar
Rahman Usta
Kodedu.com bünyesinde eğitim ve danışmanlık faaliyetleri sürdüren Rahman Usta, 2012 yılında yayına çıkan popülerJava Mimarisiyle Kurumsal Çözümler ve 2014 yılında yayınlanan Java 8 Ebook kitaplarının yazarıdır. Açık kaynak dünyasına katkı veren yazar, geliştirdiği AsciidocFX projesiyle Duke's Choice Award 2015 ödülünü kazanmıştır. Rahman ayrıca, Istanbul JUG'un ve Java standartlarını geliştiren JCP (Java Community Process)'in bir üyesidir. 2018 yılında Java Şampiyonu olarak seçilmiştir.

Previous post

JavaFX Scene Builder (Sahne İnşa Aracı)
15 Mayıs 2012

Next post

Cloud Jenkins (BuildHive)
18 Mayıs 2012

You may also like

api-logo
Swagger Nedir? Neden kullanılır?
10 Ekim, 2018
spring-cli-logo
Spring CLI ile Spring Boot Projeleri Hazırlamak
21 Ağustos, 2017
eureka_architecture
Spring Cloud Netflix ve Eureka Service Discovery
3 Temmuz, 2017

Leave A Reply Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta listesine kayıt olun!






Gözde yazılar

Hafif bir Kod Editörü – Brackets
30Haz2012
Java’da Record’lar
27Oca2020
Reflection ile Dependency Injection nasıl gerçekleştirilir?
04Eyl2012
Integration of Spring MVC and Mustache
02Ağu2013

Son Yazılar

  • Java’da Record’lar 27 Ocak 2020
  • Swagger Nedir? Neden kullanılır? 10 Ekim 2018
  • Spring CLI ile Spring Boot Projeleri Hazırlamak 21 Ağustos 2017
  • Spring Cloud Netflix ve Eureka Service Discovery 3 Temmuz 2017
  • Online React.js Eğitimi ardından (15-25 Mayıs 2017) 31 Mayıs 2017

Son Yorumlar

  • YAML Nedir? Neden YAML Kullanmalıyız? için shahriyar
  • Java Persistence API Nedir? (Giriş) için Utku
  • Java 8 – CompletableFuture ile Asenkron Programlama için Rahman Usta
  • Java 8 – CompletableFuture ile Asenkron Programlama için burak
  • Arm7 Nxp 2104 işlemci ile basit bir Uygulama için Mustafa Dinc

Get Java Software

Arşivler

Bizi takip edin

React.js Eğitimi Başlıyor
11-22 Eylül, 2017
Eğitmen
Rahman Usta
İletişim

merhaba@kodedu.com

  • Hakkında
  • Gizlilik Politikası
  • İletişim
  • Referanslar
Kodedu Bilişim Danışmanlık
Cemil Meriç mah. Çelebi sok.
No:16/3 Ümraniye/İSTANBUL
Tel: 0850 885 38 65
Alemdağ V.D.: 8960484815

KODEDU © Tüm hakları saklıdır.