Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 什么是';复合图案';?_Oop_Design Patterns_Composite_Object Oriented Analysis - Fatal编程技术网

Oop 什么是';复合图案';?

Oop 什么是';复合图案';?,oop,design-patterns,composite,object-oriented-analysis,Oop,Design Patterns,Composite,Object Oriented Analysis,任何人都可以解释并给出一个真实的实例来说明复合设计模式吗?当一组对象应被视为同一类型的一个对象时,可以使用复合模式。这通常用于树结构数据。下面是此模式非常适合的示例: public abstract class Shape { public abstract void Draw(); } public class Line : Shape { public override void Draw() { // Draw line } } public c

任何人都可以解释并给出一个真实的实例来说明复合设计模式吗?

当一组对象应被视为同一类型的一个对象时,可以使用复合模式。这通常用于树结构数据。下面是此模式非常适合的示例:

public abstract class Shape {
    public abstract void Draw();
}

public class Line : Shape {
    public override void Draw() {
        // Draw line
    }
}

public class Polygon : Shape {

    private IList<Line> lines;

    public override void Draw() {
        foreach (Shape line in lines) {
            line.Draw();
        }
    }
}
公共抽象类形状{
公开摘要无效抽取();
}
公共课线:形状{
公共覆盖无效绘图(){
//划线
}
}
公共类多边形:形状{
私有IList线路;
公共覆盖无效绘图(){
foreach(线条中的造型线条){
line.Draw();
}
}
}
如您所见,该模式使处理绘制形状的代码可能不知道绘制了多少条线。

[无聊模式开][无聊模式关]检查,它有一个Java语言的示例。同时检查,UML类图和参与者都很好,它是用C语言实现的。希望有帮助。编辑:我刚刚找到了一些最佳实践。