From 3e5b01c31131171f89c9ad6ece91366abc507dbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=BC=C5=9Fra=20G=C3=BCler?= Date: Sat, 1 Jan 2022 21:27:51 +0300 Subject: [PATCH 1/2] Initial commit --- README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..d345223 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# decorator-example +Decorator Example From 7a01d62a1a5a5d8890c94f64b817bb743c53093c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=BC=C5=9Fra=20G=C3=BCler?= Date: Sat, 1 Jan 2022 22:52:45 +0300 Subject: [PATCH 2/2] add readme --- README.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d345223..d9857d6 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,20 @@ -# decorator-example -Decorator Example + +Decorator desenini; bir interface’de imzası tanımlanmış herhangi bir metodun işlevini genişletebilmek için ilgili interface’i implement eden bir sınıf olarak tanımlayabiliriz. Decorator deseni, bir nesneye dinamik olarak yeni özellikler eklemek için kullanılır. Mevcut sınıfa bir sarmalayıcı sağlayan yapısal bir desendir. Sarmalayıcıyı uygulamak için composition ile birlikte abstract class veya interface’leri kullanır. + +Bu uygulamada, decorator tasarım deseni kullanılarak X bankasından, emekli aylığını alan bir kişinin aylık ödemesi gerçekleştirilir. + +Senaryo: +Emekli aylığını X bankasından alan bir kişiye belirli kriterleri sağladığı taktirde, belirli zamanlarda banka tarafından promosyon ödemesi yapılmaya karar verilmiştir. +Promosyon ödemesi aşağıdaki durumlarda yapılır: +1-) Emekli aylığını X bankasına taşıyan emekliye, ilk aylığında 500TL ödeme. +2-) Emekli aylığını bir yıldır X bankasından alan emeklinin her yıldönümünde 1500TL ödeme. + +UML Diyagram: + +Pension interface’ini implement eden PensionImlp sınıfındaki pay() methodu bankanın emekliye yaptığı maaş ödemesini gerçekleştirir. +FirstMonthPromotion dekoratöründeki getFirstMonthPromotion() methodu senaryoda ki birinci durumu, AnnualPromotion dekoratöründeki AnnualPromotion() methodu senaryoda ki ikinci durumu gerçekleştirir. + +![image](https://user-images.githubusercontent.com/16039532/147858998-51b21b3f-efda-4638-860b-ec35e9a128e9.png) + + +