『翻訳』コンビネーションモード


Compsite pattern
コンビネーションモード
From Wikipedia,the free encyclopedia
In computer science、the compossite pattern is a partitioning design pattern.Compsite allows a group of object to be treated in the same way as a single instance of abject.The intet of compsite is to「compse object into tree structes to represent party-whole hierarchies.Compsite lets clients treat individual object and compsitions uniformly.」
 
コンピュータ科学では、グループモードは分離された設計モードである.グループはオブジェクトを一つのオブジェクトとして扱う個別の例を許容し、統一された処理方式で処理する.グループの意図は、オブジェクトをツリー型の構造に組み立てててて、部分的・全体的な階層構造を表すことである.グループは、お客様に異なるオブジェクトとコンポーネントを統一的に処理することができるようにする..
内容
 
<script type=「text/javascript」>
動機
When dealing with tree-stststructred data、programmersoted have to discriminaate between a leaf- node anda branch.This makes code comorecococococococococococococococococomoreecococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococococoeeeecocococococococorererereeeeeeee)designed as a compsition of one-more simillar objecs、all exhibiting simillar functionlity、This known asa「object-orented programming」"relationship between object.The key concept is that you can manipulate a single instance of the object just You would a group of them.The operation Can perform on all the compsite ject ovest off.it would be useful to define resizing a group of shop to have the same effect(in some sense)as resingle shape.
 
ツリー構造のデータを処理する場合、プログラマはしばしば、ノードがリーフノードであるか、または枝葉点であるかを区別するために時間を必要とする.このように引き起こす問題はコードがより複雑であり、そのために、より多くのエラーが発生しました.この解決策は一つのインターフェースであり、それらの複雑または単純なオブジェクトを統一的に処理することができます.オブジェクト指向では、1つのコンポーネントは、1つまたは複数の類似のタイプのオブジェクトのセット(他の形状)であり、これらのオブジェクト間で類似の機能を有しているオブジェクト(比喩的には1つの形状)である.これが、一般的に知られている対象間の「has-a」関係です.このモードの最大の利点は、一つのオブジェクトを扱うことができるということです.複数のオブジェクトを扱うのと同じです.すべてのコンポーネントのオブジェクトで行う必要がある操作は、最小のセンチの母を持っています.例えば、システムがスクリーンからグループの形を描く場合、以下の方法がより良いです.形状が統一されたサイズ変更方法(ある意味)を定義するのは、形の大きさを変えるようなものです.
いつまで使えますか
Compsite can be used when clients shound ignore the difference between compsitions of objecs and individual ojecs.has-a If programmers find that the y arits the same way,and tens the and goodhanceit is less complex in this situation to treat prmitives and compsites as homogeneous.
 
組み合わせモードは、ユーザが複数の異なるオブジェクトと個々のオブジェクトとの違いを無視する必要がある場合に適用されます.あるプログラマが一つの方法を使って異なるオブジェクトにアクセスしていることを発見しました.そして、いつも同じような方法を使って彼らを処理しています.組み合わせを使用すると簡単に同じ種類のオブジェクトの組み合わせを処理できます.
 
構造
least common denominator
[1]
Compsite pattern in
.

UML
Compsite pattern in
.
コンポーネント
  • のすべてのコンポーネントの抽象的な組み合わせを含む
  • は、グループ内のすべてのオブジェクトのインターフェース
  • を定義する.
  • は、すべてのクラスに対応するインターフェースに関するデフォルト挙動
  • を適切に実現する.
  • は、簡単に子供のコンポーネントにアクセスして管理することを定義する
  • .
  • (オプション)は、再帰的にその親ノードにアクセスするインターフェースを定義し、便利であれば
  • は、グループ内のすべてのリーフオブジェクトを定義する
  • .
  • は、すべてのコンポーネント方法
  • を使用する.
    組み合わせ
  • は、1つの組合せコンポーネント(コンポーネントには子供ノードがあります)
  • を表しています.
  • 実装方法は、子供ノード
  • を操作する.
  • は、すべてのコンポーネント方法を実装し、通常、彼らの子供ノード
  • にプロキシする.

    Java
    以下の例では、Javaを用いて作成し、図形クラスを実現しています.楕円または複数の図形の集合かもしれません.それぞれの図形は印刷できます.
     
    import java.util.List;
    
    import java.util.ArrayList;
    
     
    /** "Component" */
    
    interface
     Graphic {
    
         //Prints the graphic.
    
        public void print();
     
    }
    
     
    /** "Composite" */
    
    class CompositeGraphic implements Graphic {
     
        //Collection of child graphics.
    
        private List<Graphic> mChildGraphics = new ArrayList<Graphic>();
     
        //Prints the graphic.
    
        public void print() {
            for (Graphic graphic : mChildGraphics) {
                graphic.print();
            }
        }
    
     
        //Adds the graphic to the composition.
    
        public void add(Graphic graphic) {
            mChildGraphics.add(graphic);
        }
    
     
        //Removes the graphic from the composition.
    
        public void remove(Graphic graphic) {
            mChildGraphics.remove(graphic);
        }
    }
    
     
     
    /** "Leaf" */
    
    class Ellipse implements Graphic {
     
        //Prints the graphic.
        public void print() {
            System.out.println("Ellipse");
        }
    
    }
    
     
     
    /** Client */
    
    public class Program {
     
        public static void main(String[] args) {
    
            //Initialize four ellipses
    
            Ellipse ellipse1 = new Ellipse();
            Ellipse ellipse2 = new Ellipse();
            Ellipse ellipse3 = new Ellipse();
            Ellipse ellipse4 = new Ellipse();
     
            //Initialize three composite graphics
    
            CompositeGraphic graphic = new CompositeGraphic();
            CompositeGraphic graphic1 = new CompositeGraphic();
            CompositeGraphic graphic2 = new CompositeGraphic();
     
            //Composes the graphics
    
            graphic1.add(ellipse1);
            graphic1.add(ellipse2);
            graphic1.add(ellipse3);
             graphic2.add(ellipse4);
             graphic.add(graphic1);
            graphic.add(graphic2);
     
            //Prints the complete graphic (four times the string "Ellipse").
    
            graphic.print();    }
    
    }