組み込み C++ 設計パターンを使用して、リソースに制約のある環境に適した、効率的で信頼性の高いコードを作成できます。 シングルトン パターン: リソースの管理に使用される特定のクラスのインスタンスが 1 つだけであることを保証します。オブザーバー パターン: オブジェクトが他のオブジェクトをサブスクライブし、状態変化の通知を受信できるようにします。ファクトリ メソッド パターン: 正確なクラスを指定せずに、型に基づいてオブジェクトを作成します。実際のケース: タスク スケジューリング システムは、これらのモードを使用して効率的なタスク スケジューリングを実現し、主要なタスクの信頼性の高い実行を保証します。
組み込みシステム用の C++ デザイン パターン
はじめに
組み込みシステムは通常、リソースに制約のある環境で実行され、効率的で信頼性が高い必要があります。 C++ デザイン パターンは、エンジニアが簡潔で保守可能、スケーラブルな組み込みコードを作成するのに役立ちます。
組み込みシステム用の C++ デザイン パターン
シングルトン パターン: リソースの管理に使用できる、アプリケーション内に指定されたクラスのインスタンスが 1 つだけ存在することを保証します。
class Singleton { private: Singleton() {} // 私有构造函数,防止直接创建 static Singleton* instance_; public: static Singleton* getInstance() { if (!instance_) { instance_ = new Singleton; } return instance_; } };
オブザーバー パターン: オブジェクトが他のオブジェクトをサブスクライブし、その状態変更の通知を受信できるようにします。
class Observable { private: std::vector<Observer*> observers_; public: void attach(Observer* observer) { observers_.push_back(observer); } void detach(Observer* observer) { observers_.erase(std::remove(observers_.begin(), observers_.end(), observer)); } void notify() { for (auto& observer : observers_) { observer->update(); } } }; class Observer { public: virtual void update() = 0; }; class ConcreteObserver1 : public Observer { public: void update() { std::cout << "ConcreteObserver1: Received update." << std::endl; } };
ファクトリ メソッド パターン: 正確なクラスを指定せずに、オブジェクトの具象実装を作成します。
class Shape { public: virtual double getArea() = 0; virtual double getPerimeter() = 0; }; class Circle : public Shape { public: double getArea() override { return 3.14 * radius_; } double getPerimeter() override { return 2 * 3.14 * radius_; } private: double radius_; }; class Square : public Shape { public: double getArea() override { return side_ * side_; } double getPerimeter() override { return 4 * side_; } private: double side_; }; class ShapeFactory { public: static Shape* createShape(std::string type, double dimension) { if (type == "Circle") { return new Circle(dimension); } else if (type == "Square") { return new Square(dimension); } else { return nullptr; } } }; int main() { Shape* circle = ShapeFactory::createShape("Circle", 5); std::cout << "Circle area: " << circle->getArea() << std::endl; Shape* square = ShapeFactory::createShape("Square", 3); std::cout << "Square area: " << square->getArea() << std::endl; return 0; }
実践例: タスク スケジューリング システム
リソースに制約のある組み込みシステムにタスク スケジューラを実装する場合、デザイン パターンを活用できます。このシステムには、タスク、タスク キュー、スケジューラが含まれています:
これらの設計パターンを採用することで、効率的で堅牢かつスケーラブルなタスク スケジューリング システムを作成し、組み込みシステムで重要なタスクを確実に実行できます。
以上が組み込みシステム用の C++ 設計パターンとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。