嵌入式 C 設計模式可用於建立高效可靠的程式碼,適用於資源受限的環境:單例模式:確保只有一個特定類別的實例,用於管理資源。觀察者模式:允許物件訂閱其他物件並接收狀態變更通知。工廠方法模式:根據類型建立對象,而無需指定確切的類別。實戰案例:任務調度系統利用這些模式實現高效率的任務調度,確保關鍵任務的可靠執行。
在嵌入式系統中的C 設計模式
引言
嵌入式系統通常在資源受限的環境下運行,需要具備高效率和可靠性。 C 設計模式可以幫助工程師創建簡潔、可維護且可擴展的嵌入式程式碼。
適用於嵌入式系統的C 設計模式
單例模式:確保應用程式中只有一個給定類別的實例,可用於管理資源。
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中文網其他相關文章!