Режим разработки JAVA (комбинации режимов)

Комбинированный режим    

Объединение объектов в виде древовидной структуры , чтобы представить «часть - целое» иерархии. Композит , имеющий последовательность , например , что один пользовательские объекты и комбинации объектов.
 
Композитный шаблон       

Compose объекты в древовидные структуры для представления partwhole иерархий. Композитный позволяет клиентам рассматривать индивидуальные объекты и композиции объектов равномерно.

I. Обзор  

    Комбинированный режим о том, как объекты образуют древовидную структуру, чтобы представить общую модель зрелости и иерархии раздела. Используя комбинацию режимов, что позволяет пользователь в согласованном порядке отдельных объектов и комбинации объектов, ключ лежит в комбинированном режиме, будь то отдельный объект или сочетание объектов все реализует один и тот же интерфейс или абстрактный класс того же подкласс. 

Во-вторых, сочетание структуры и режима 

Структурная модель включает в себя три роли:
• абстрактного компонента (компонент) 
• Композитный узел (узел Composite) 
• листовой узел (листовой узел)

диаграммы классов UML

реализация

1. Абстрактный компонент (компонент): MilitaryPerson.java

импорт java.util *. ; 
публичный  интерфейс MilitaryPerson { 
       общественного  недействительными добавить (MilitaryPerson человек); 
      общественного  недействительными удалить (MilitaryPerson человек); 
      общественный MilitaryPerson GetChild ( INT индекс);  
      общественный итератор <MilitaryPerson>   getAllChildren (); 
      общественное  логическое IsLeaf (); 
      общественности  двойной getSalary (); 
      общественного  недействительная setSalary ( двойная заработная плата); 
  }  

2. Композитный 节点 (Composite Node): MilitaryOfficer.java

импорт java.util *. ; 
общественный  класс MilitaryOfficer реализует MilitaryPerson { 
      LinkedList <MilitaryPerson> список; 
       Имя строки; 
       двойная заработная плата; 
      MilitaryOfficer (имя String, двойная зарплата) {
              это .name = имя;
             это .salary = заработная плата; 
             список = новый LinkedList <MilitaryPerson> (); 
       } 
        Общественного  недействительными добавить (MilitaryPerson человек) { 
             list.add (человек); 
       }
       общественного  недействительными удалить (MilitaryPerson человек) { 
             list.remove (человек); 
       } 
       Общественного MilitaryPerson GetChild ( INT индекс) {
              вернуться list.get (индекс); 
        } 
       Общественного итератора <MilitaryPerson>   getAllChildren () {
              возвращение list.iterator (); 
        } 
       Общественного  логический IsLeaf () {
             вернуться  ложным ; 
       } 
        Общественное  двойное getSalary () {
              вернуть зарплату; 
       } 
      Общественной  недействительная setSalary (двойная заработная плата) {
             это .salary = заработная плата; 
       } 
 }

 3. Узел листьев (листовой узел): MilitarySoldier.java

импорт java.util *. ; 
общественный  класс MilitarySoldier реализует MilitaryPerson { 
  двойную зарплату; 
 Имя строки; 
 MilitarySoldier (имя String, двойная зарплата) { 
  это .name = имя; 
 это .salary = заработная плата; 
 } 
 Общественного  недействительными добавить (MilitaryPerson человек) {} 
  общественного  недействительными удалить (MilitaryPerson человек) {} 
  общественного MilitaryPerson GetChild ( INT индекс) { 
  возвращение  нуль ; 
 } 
 общественногоИтератор <MilitaryPerson> getAllChildren () { 
  возвращение  нуль ; 
 } 
 Общественного  логический IsLeaf () { 
  вернуться  верно ; 
 } 
 Общественное  двойное getSalary () { 
  вернуть зарплату; 
 } 
 Общественной  недействительная setSalary ( двойная заработная плата) { 
  это .salary = заработная плата; 
 } 
}

4. _1 Применение: ComputerSalary.java

импорт java.util *. ; 
общественный  класс ComputerSalary { 
  общественный  статический  двойной computerSalary (MilitaryPerson человек) { 
  двойной сумма = 0 ; 
 если (person.isLeaf () == истинно ) { 
 сумма = сумма + person.getSalary (); 
 } 
 Если (person.isLeaf () == ложно ) { 
 сумма = сумма + person.getSalary (); 
 Итератора <MilitaryPerson> итераторы = person.getAllChildren (); 
 в то время как (iterator.hasNext ()) { 
 MilitaryPerson р = iterator.next (); 
 сумма= сумма + computerSalary (р) ;; 
 } 
 } 
 Вернуть сумму; 
 } 
}

 

рекомендация

отwww.cnblogs.com/sunupo/p/11222255.html
рекомендация