提交 40f3a070 编写于 作者: E ex_kongxiang

feat(组合模式):create

上级 6ca37677
package com.kongxiang.raindrop.dp.type.structure.composite;
/**
* @author 孔翔
* @since 2023-10-23
* copyright for author : 孔翔 at 2023-10-23
* dp
*/
public class Client {
public static void main(String[] args) {
Leaf leaf = new Leaf("张三”");
Leaf leaf1 = new Leaf("张4”");
Leaf leaf2 = new Leaf("张5”");
Leaf leaf3 = new Leaf("张6”");
Leaf leaf4 = new Leaf("张7”");
Composite composite = new Composite("组1");
composite.add(leaf);
composite.add(leaf1);
Composite composite2 = new Composite("组2");
composite2.add(leaf2);
composite2.add(leaf3);
Composite composite3 = new Composite("组3");
composite3.add(leaf4);
composite.add(composite2);
composite2.add(composite3);
composite.draw();
}
}
package com.kongxiang.raindrop.dp.type.structure.composite;
/**
* @author 孔翔
* @since 2023-10-23
* copyright for author : 孔翔 at 2023-10-23
* dp
*/
public abstract class Component {
protected String name;
public Component(String name){
this.name = name;
}
public abstract void draw();
public abstract void add(Component component);
public abstract void remove(Component component);
}
package com.kongxiang.raindrop.dp.type.structure.composite;
import java.util.ArrayList;
import java.util.List;
/**
* @author 孔翔
* @since 2023-10-23
* copyright for author : 孔翔 at 2023-10-23
* dp
*/
public class Composite extends Component {
private List<Component> componentList = new ArrayList<>();
public Composite(String name) {
super(name);
}
@Override
public void draw() {
for (Component com :
componentList) {
com.draw();
}
}
@Override
public void add(Component component) {
this.componentList.add(component);
}
@Override
public void remove(Component component) {
this.componentList.remove(component);
}
}
package com.kongxiang.raindrop.dp.type.structure.composite;
/**
* @author 孔翔
* @since 2023-10-23
* copyright for author : 孔翔 at 2023-10-23
* dp
*/
public class Leaf extends Component {
public Leaf(String name) {
super(name);
}
@Override
public void draw() {
System.out.println(this.name);
}
@Override
public void add(Component component) {
throw new IllegalArgumentException("叶节点不能添加组件");
}
@Override
public void remove(Component component) {
throw new IllegalArgumentException("叶节点不能移除组件");
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册