组合设计模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树状结构,并且能够像处理独立对象一样处理组合对象。这种模式创建了一个包含自己对象组的类,该类提供了修改相同对象组的方式。 在组合模式中,有两个基本类型的对象:叶子对象和组合对象。组合对象包含了一组叶子对象,因此组合对象可以用来创建一个树形结构。总之,组合模式是一种非常有用的模式,可以使系统更加灵活和可扩展。但是,它也有一些缺点,需要根据具体情况进行权衡和选择。在使用组合模式时,需要考虑到具体的业务需求和系统性能要求。
传统设计模式讲解时使用的示例代码,大都采用与读者日常生活接解的业务系统没有多大关联关系。以致大部分读者无法做到学以致用,学完就忘记。本文采用使用日常生活中随处可见的产品相关业务来编写实现代码
首先,创建一个商品接口:
public interface Product {
public void add(Product product);
public void remove(Product product);
public void display();
}
然后创建两个类,一个是叶子对象类(商品类),另一个是组合对象类(商品分类类)
商品类:
public class Item implements Product {
private String name;
public Item(String name) {
this.name = name;
}
public void add(Product product) {
// 暂没有实现
} public void remove(Product product) {
// 暂没有实现
}
public void display() {
System.out.println(name);
}
}
商品分类类:
import java.util.ArrayList;
import java.util.List;
public class Category implements Product {
private String name;
private List<Product> productList = new ArrayList<Product>();
public Category(String name) { t
his.name = name;
}
public void add(Product product) {
productList.add(product);
}
public void remove(Product product) {
productList.remove(product);
}
public void display() {
System.out.println(name);
for (Product product : productList) {
product.display(); }
}
}
在上述示例中,商品分类类实现了Product接口,并且包含了一组商品对象,因此它可以被视为一个组合对象。