Composite

GOF Intent:
Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.

Composite Pattern براي پياده سازي ساختارهاي درختي بکار مي رود.

وقتي از Composite Pattern استفاده کنيد که مي خواهيد:

  1. سلسله مراتب کل به جزء را پياده نماييد
  2. مي خواهيد Client تفاوتي بين يک Object و ترکيب Object ها قائل نشود و با هر دو، يکسان رفتار نمايد
بطور کلي Composite به Object اي گفته مي شود که مي تواند در ساختار درختي Object هاي ديگري را در زير خود بپذيرد.
بر خلاف آن Leaf است که در پايين درخت قرار دارد و Object ديگري نمي تواند زير آن قرار گيرد.

Composite Tree



ساختار کلاس ها در اين Pattern بدين صورت است:

Composite Design Pattern



نمونه کد:

public interface IEmployee{
   public int showScore();
}


public class Worker implements IEmployee{ // LEAF
   private String name;
   private int score;

   public Worker(String name, int score){
      this.name = name;
      this.score = score;
   }

   public int showScore(){
      System.out.println(“Name:”name+”, Score:”+score)
   }
}


public class Supervisor implements IEmployee{ // COMPOSITE
   private String name;
   private int score;

   private ArrayList subordinate = new ArrayList();

   public Supervisor(String name, int score){
      this.name = name;
      this.score = score;
   }

   public void addSubordinate(IEmployee employee){
      subordinate.add(employee);
   }

   public int showScore(){
      System.out.println(“Name:”name+”, Score:”+score);

      for (Iterator it = subordinate.iterator(); it.hasNext();) {
         it.next().showScore();
      }
   }
}


public static void main(String[] args){

   Worker a = new Worker(“Ali”, 5);
   Supervisor b = new Supervisor(“Reza”, 6);
   Supervisor c = new Supervisor(“Hamid”, 7);
   Supervisor d = new Supervisor(“Amir”, 9);
   Worker e = new Worker(“Nader”, 3);

   b.AddSubordinate(a);
   c.AddSubordinate(b);
   c.AddSubordinate(d);
   d.AddSubordinate(e);

   c.showScore();
}



منبع ها:

  1. Design Patterns – Elements of Reusable Object Oriented Software (GOF) By Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
  2. Composite in Devlake

پست شده در دسته‌بندی نشده

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*


سه + = 11

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

تماس با من: admin@paspars.com