Обзор
Это структурная картина, которая организует объекты в структуре деревьев, чтобы представлять «частичную» иерархию, что делает клиента уникальным в использовании отдельных объектов и комбинированных объектов.
Диаграмма класса UML
Приведенная выше классная диаграмма содержит роли:
Компонент: объявить общий интерфейс для объекта, участвующего в композиции, будь то комбинация или листовой узел.
Лист: представляет объект узла листового узла в комбинации, а узел листьев не имеет дочерних узлов.
Композитный: представляет объект с дочерними объектами, участвующими в комбинации, и дает поведение конструкции ветви;
Пример кода
import java.util.arraylist; import java.util.list; Abstract Class Component {Protected String name; public Component (String name) {this.name = name; } public Abstract void Add (компонент C); Public Abstract void удаление (компонент C); Public Abstract void getChild (int debine);} класс Leaf Extens Component {public Leaf (String name) {super (name); } @Override public void add (компонент C) {System.out.println ("не может добавить в лист"); } @Override public void remove (компонент C) {System.out.println ("Не может удалить из листа"); } @Override public void getChild (int devil) {string temp = ""; for (int i = 0; i <глубина; i ++) {temp+= "-"; System.out.println (Temp + name); }}} Class Composite Extends Component {Private List <Component> kids = new ArrayList <> (); public Composite (String name) {super (имя); } @Override public void add (компонент C) {kids.add (c); } @Override public void remove (компонент C) {kids.remove (c); } @Override public void getChild (int debine) {for (компонент C: дети) {c.getChild (глубина); }}} открытый класс main {public static void main (string args []) {composite root = new Composite ("root"); root.add (новый лист ("лист" ")); root.add (новый лист ("лист b")); Composite Compx = new Composite ("Composite x"); compx.add (новый лист ("лист xa")); compx.add (новый лист ("лист XB")); root.add (compx); Composite Compxy = new Composite ("Composite XY"); compxy.add (новый лист ("лист Xya")); compxy.add (новый лист ("лист xyb")); compx.add (compxy); root.getchild (3); }}Сценарии приложения
1. Требуется часть иерархии объекта.
2. Если клиент хочет, чтобы клиент игнорировал разницу между комбинированным объектом и одним объектом, клиент будет использовать все объекты в комбинированной структуре равномерно.
Комбинированный шаблон определяет классовую структуру, состоящую из объектов листьев и составных объектов;
Сделайте клиента простым;
Это позволяет легко добавлять или удалять подразделения.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.