Mehmet Ethem SULAN :: Java Tasarım Şablonları :: Java Composite Design Pattern Example and UML Diagram(Birleşik Tasarım Şablonun Java Kodu)

Image00001

Uml diagram:http://prntscr.com/755x

Composite tasarım kalıbı nesnelerde parça-bütün ilşkisini sağlar.Bu sistem,sistemin alt parçalarını kullanıma izin verdiği için sistemin yazımı ve kullanımı kolaylaşır.Nesneleri bir ağaç yapısı şeklinde tutar.Örnekte anlaışldığı gibi bir BWM var ve bunna ait parçalar var.Biz bu parçalara eriştiğimiz gibi onları birleştirerek sistemin bütünü oluşturuyoruz.Bir yapıyı oluşturan nesneler topluluğunda yapıyı oluşturan parçaları tree(ağaç) şeklinde tutar.

package www.ethemsulan.com;
public interface BMWParca {
	public void seriNo();
}

Orj kod:http://www.ethemsulan.pastebin.com/034xJwxC

package www.ethemsulan.com;
public class Fren implements BMWParca {
private static String frenSeriNo="F34";
public static String getFrenSeriNo() {
		return frenSeriNo;
	}
public static void setFrenSeriNo(String frenSeriNo) {
		Fren.frenSeriNo = frenSeriNo;
	}
public void seriNo() {
System.out.println("Fren seri no: "+getFrenSeriNo());
	}
}

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

package www.ethemsulan.com;
public class Debriyaj implements BMWParca {
private static String debriyajSeriNo="D21";
public static String getDebriyajSeriNo() {
		return debriyajSeriNo;
	}
public static void setDebriyajSeriNo(String debriyajSeriNo) {
	Debriyaj.debriyajSeriNo = debriyajSeriNo;
	}
public void seriNo() {
System.out.println("Debriyaj seri no : "+getDebriyajSeriNo());
	}
}

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

package www.ethemsulan.com;
public class Balata implements BMWParca {
private static String balataSeriNo="B17";
public static String getBalataSeriNo() {
		return balataSeriNo;
	}
public static void setBalataSeriNo(String balataSeriNo) {
	Balata.balataSeriNo = balataSeriNo;
	}
public void seriNo() {
System.out.println("Balata seri no : "+getBalataSeriNo());
	}
}

Orj kod:http://www.ethemsulan.pastebin.com/054mvYQF

package www.ethemsulan.com;
import java.util.LinkedList;
public class BMW implements BMWParca {
private LinkedList listem=
	new LinkedList();
public LinkedList getListem() {
		return listem;
	}
public void setListem(LinkedList listem) {
		this.listem = listem;
	}
public void parcaEkle(BMWParca istenenParca){
		getListem().add(istenenParca);
	}
public String parcaDegistir(BMWParca eskiParca,
BMWParca yeniParca, String hangiParca,String yeniSeriNo){
  if(getListem().contains(eskiParca)){
	if(hangiParca.equals("Fren")){
		getListem().remove(eskiParca);
		getListem().add(yeniParca);
	Fren.setFrenSeriNo(yeniSeriNo);
return "Fren seri no : "+yeniSeriNo+" olarak degistirildi";
	}else if(hangiParca.equals("Debriyaj")){
		getListem().remove(eskiParca);
		getListem().add(yeniParca);
	Debriyaj.setDebriyajSeriNo(yeniSeriNo);
return "Debriyaj seri no: "+yeniSeriNo+" olarak degistirildi";
	}else if(hangiParca.equals("Balata")){
		getListem().remove(eskiParca);
		getListem().add(yeniParca);
	Balata.setBalataSeriNo(yeniSeriNo);
return "Balata seri no:"+yeniSeriNo+" olarak degistirildi";
			}
		}
return "Girilen deger Balata, Fren, Debriyaj isimlerini icermeli";
	}
public void seriNo() {
		new Fren().seriNo();
		new Debriyaj().seriNo();
		new Balata().seriNo();
	}
}

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

package www.ethemsulan.com;
public class TestSinifim {
public static void main(String[] args) {
	BMW bmwNesnem=new BMW();
	BMWParca fren1=new Fren();
	bmwNesnem.parcaEkle(fren1);
BMWParca debriyaj1=new Debriyaj();
	bmwNesnem.parcaEkle(debriyaj1);
	BMWParca balata1=new Balata();
	bmwNesnem.parcaEkle(balata1);
	BMWParca fren2=new Fren();
	bmwNesnem.seriNo();
System.out.println(bmwNesnem.parcaDegistir(
		fren1, fren2, "Fren", "F99"));
	BMWParca balata2=new Balata();
System.out.println(bmwNesnem.parcaDegistir(
balata1, balata2, "Yanlis parca secildi", "B77"));
	bmwNesnem.seriNo();
	}
}

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

Write a Comment

Let me know what you think?