C++での複合デザインパターン
複合パターンは、オブジェクトのグループを単一のオブジェクトと同じように扱う必要がある場合に使用されます。複合パターンは、階層全体だけでなく一部を表すために、ツリー構造の観点からオブジェクトを構成します。このタイプのデザインパターンは、オブジェクトのグループのツリー構造を作成するため、構造パターンに分類されます。
このパターンは、独自のオブジェクトのグループを含むクラスを作成します。このクラスは、同じオブジェクトのグループを変更する方法を提供します。
組織の従業員階層を示す次の例を使用して、複合パターンの使用を示しています。
ここでは、コンポジットとリーフの両方のクラスがコンポーネントを実装していることがわかります。重要な部分は複合クラスです。これには、構成関係によって示されるコンポーネントオブジェクトも含まれています。
サンプルコード
#include <iostream>
#include <vector>
using namespace std;
class PageObject {
public:
virtual void addItem(PageObject a) { }
virtual void removeItem() { }
virtual void deleteItem(PageObject a) { }
};
class Page : public PageObject {
public:
void addItem(PageObject a) {
cout << "Item added into the page" << endl;
}
void removeItem() {
cout << "Item Removed from page" << endl;
}
void deleteItem(PageObject a) {
cout << "Item Deleted from Page" << endl;
}
};
class Copy : public PageObject {
vector<PageObject> copyPages;
public:
void AddElement(PageObject a) {
copyPages.push_back(a);
}
void addItem(PageObject a) {
cout << "Item added to the copy" << endl;
}
void removeItem() {
cout << "Item removed from the copy" << endl;
}
void deleteItem(PageObject a) {
cout << "Item deleted from the copy";
}
};
int main() {
Page p1;
Page p2;
Copy myCopy;
myCopy.AddElement(p1);
myCopy.AddElement(p2);
myCopy.addItem(p1);
p1.addItem(p2);
myCopy.removeItem();
p2.removeItem();
} 出力
Item added to the copy Item added into the page Item removed from the copy Item Removed from page
-
C++で数字のパターンを印刷するプログラム
このチュートリアルでは、特定の数字のパターンを印刷するプログラムについて説明します。 私たちのタスクは、コードでループ構造を利用し、指定されたパターンを出力することです- 1 232 34543 4567654 567898765 例 #include<bits/stdc++.h> using namespace std; int main(){ int n = 5, i, j, num = 1, gap; gap = n - 1; for ( j = 1 ; j <=
-
C++シングルトンデザインパターンを説明します。
シングルトンデザインパターンは、クラスのインスタンス化を1つのオブジェクトに制限するために使用されるソフトウェアデザインの原則です。これは、システム全体でアクションを調整するために1つのオブジェクトが必要な場合に役立ちます。たとえば、ログをファイルに書き込むロガーを使用している場合は、シングルトンクラスを使用してそのようなロガーを作成できます。次のコードを使用してシングルトンクラスを作成できます- 例 #include <iostream> using namespace std; class Singleton { static Singleton