Mehmet Ethem SULAN :: Java Tasarım Şablonları :: Java Decorator Design Pattern Example and UML Diagram(Dekoratör Tasarım Şablonun Java Kodu)

decorator

UML diagramin daha büyük resmi:http://prntscr.com/9vb4

package www.ethemsulan.com;
public interface Bilgisayar {
	public void tamirEt();
}

Orj kod:http://www.ethemsulan.pastebin.com/wNF0a9Pp

package www.ethemsulan.com;
public class MasaustuBilg implements Bilgisayar {
public void tamirEt() {
System.out.println("Tamir etmek icin bilgisayar alindi");
  }
}

Orj kod:http://www.ethemsulan.pastebin.com/pAiLfxZV

package www.ethemsulan.com;
//Nesne oluşturuluyor ve bu nesne üzerinde değişikler
//gerçekleştiriliyor.Decorator kalıbı bize nesneyi
//istediğimiz şekilde düzenlememizi sağlıyor.
//Bu interfaceyi imlemente eder ama soyut olduğu için
//interface içindeki metodu tanımlamayabilir.
public abstract class BilgisayarDecorator implements Bilgisayar {
private Bilgisayar tamEdilBilg=new MasaustuBilg();
public Bilgisayar getTamEdilBilg() {
		return tamEdilBilg;
	}
public void setTamEdilBilg(Bilgisayar tamEdilBilg) {
		this.tamEdilBilg = tamEdilBilg;
	}
}

Orj kod:http://www.ethemsulan.pastebin.com/2qRTYvs3

package www.ethemsulan.com;
public class MonitorDegistir extends BilgisayarDecorator {
public void tamirEt() {
 getTamEdilBilg().tamirEt();
 System.out.println(monitorYenile());
	}
private String monitorYenile(){
return "Monitörünüz LCD monitör olarak değiştirildi";
	}
}

Orj kod:http://www.ethemsulan.pastebin.com/sSZeShe2

package www.ethemsulan.com;
public class TvKartiEkle extends BilgisayarDecorator {
public void tamirEt() {
	getTamEdilBilg().tamirEt();	
	System.out.println(eklenenTvKarti());
	}
private String eklenenTvKarti(){
return "Bilgisayariniza Uydusal Yayın Uyumlu TV karti eklendi.";
	}
}

Orj kod:http://www.ethemsulan.pastebin.com/ExB4RtFF

package www.ethemsulan.com;
public class TestSinifi {
public static void main(String[] args) {
Bilgisayar monNesnem=new MonitorDegistir();
	monNesnem.tamirEt();
	monNesnem=new TvKartiEkle();
	monNesnem.tamirEt();
	}
}

Orj kod:http://www.ethemsulan.pastebin.com/ekZRA3fe

Decorator isminden de anlaşıldığı gibi decore etmek.Yani yeniden düzenlemek eksikleri giderme ya da yeni özellikler eklemektir.Decorator tasarım kalıbı da var olan sistem ya da nesneler üzerine yeni özellikler eklemek için kullanılır.Nesnemiz sabit nesne üzerine yeni özellikler ekliyoruz.Yeniden nesne oluşturmuyoruz.Var olanı kullanıyoruz.Yukarda verilen örnekte temel olarak bir bilgisayarımız var biz o bilgisayara yeni parça ekleme ya da eskimiş parçalarını değiştirme işelmini gerçekleştiriyoruz.

Write a Comment

Let me know what you think?