【软件设计师备考 专题 】计算机专业英语:掌握基本词汇和阅读理解技巧(一)https://developer.aliyun.com/article/1467792
3. 软件设计原理与模式
3.1 单例模式
单例模式是一种常用的设计模式,它保证一个类只有一个实例,并提供一个全局访问点。在嵌入式领域,单例模式可以用于管理硬件资源或共享数据,确保只有一个实例访问这些资源。
3.1.1 实现方法
在C/C++中,可以使用静态成员变量和静态成员函数来实现单例模式。静态成员变量保证只有一个实例,静态成员函数提供全局访问点。
class Singleton { private: static Singleton* instance; // 静态成员变量 Singleton() {} // 私有构造函数 public: static Singleton* getInstance() { // 静态成员函数 if (instance == nullptr) { instance = new Singleton(); } return instance; } };
3.1.2 使用示例
Singleton* obj1 = Singleton::getInstance(); Singleton* obj2 = Singleton::getInstance(); // obj1和obj2指向同一个实例
3.1.3 对比其他设计模式
单例模式 | 工厂模式 | 建造者模式 |
保证一个类只有一个实例 | 创建对象的接口与实现分离 | 逐步构建复杂对象 |
提供全局访问点 | 通过工厂类创建对象 | 分步骤创建对象 |
管理共享资源 | 简化对象的创建过程 | 创建不同表示的对象 |
3.2 继承与多态
继承与多态是面向对象编程的重要概念,它们在软件设计中起到了关键作用。在嵌入式领域,继承与多态可以提高代码的可复用性和可扩展性。
3.2.1 继承
继承是指一个类从另一个类派生出新类,新类继承了原有类的属性和方法。在C/C++中,可以使用关键字"public"、"protected"和"private"来控制继承的访问权限。
class Base { protected: int num; public: void setNum(int n) { num = n; } }; class Derived : public Base { public: void displayNum() { cout << "Num: " << num << endl; } };
3.2.2 多态
多态是指同一类型的对象在不同情况下表现出不同的行为。在C/C++中,可以通过虚函数和纯虚函数实现多态。
class Shape { public: virtual void draw() { cout << "Drawing a shape." << endl; } }; class Rectangle : public Shape { public: void draw() override { cout << "Drawing a rectangle." << endl; } }; class Circle : public Shape { public: void draw() override { cout << "Drawing a circle." << endl; } };
3.2.3 使用示例
Shape* shape1 = new Rectangle(); Shape* shape2 = new Circle(); shape1->draw(); // Drawing a rectangle. shape2->draw(); // Drawing a circle.
3.2.4 对比其他概念
继承与多态 | 封装 | 抽象类 |
类之间的关系 | 隐藏类的实现细节 | 包含纯虚函数的类 |
提高代码复用性和可扩展性 | 限制对类成员的直接访问 | 不能实例化的类 |
子类继承父类的属性和方法 | 类的成员变量和成员函数的可见范围 | 用于定义接口 |
3.3 异常处理
异常处理是一种处理程序错误和异常情况的机制,它可以增强程序的健壮性和可靠性。在嵌入式领域,异常处理可以帮助我们处理硬件故障和异常情况。
3.3.1 异常类型
在C/C++中,异常可以是内置类型或自定义类型。内置类型的异常包括整数、浮点数等,自定义类型的异常可以是类或结构体。
try { // 可能抛出异常的代码 throw 10; // 抛出整数类型的异常 } catch (int e) { // 处理整数类型的异常 cout << "Caught an integer exception: " << e << endl; }
3.3.2 异常处理机制
在C/C++中,可以使用try-catch语句来捕获和处理异常。try块中包含可能抛出异常的代码,catch块中处理捕获到的异常。
try { // 可能抛出异常的代码 throw "Exception"; // 抛出字符串类型的异常 } catch (const char* e) { // 处理字符串类型的异常 cout << "Caught a string exception: " << e << endl; }
3.3.3 使用示例
try { int* ptr = new int[1000000000000]; // 分配过大的内存 } catch (bad_alloc& e) { cout << "Caught a bad_alloc exception: " << e.what() << endl; }
3.3.4 对比其他错误处理方式
异常处理 | 错误码返回 | 断言 |
处理程序错误和异常情况 | 返回错误码表示错误类型 | 在程序中插入断言语句 |
增强程序的健壮性和可靠性 | 需要手动处理错误码 | 在运行时检查断言条件 |
可以捕获和处理异常 | 需要在每个函数中检查错误码 | 用于检查程序中的逻辑错误 |
以上是关于软件设计原理与模式的一些知识点,包括单例模式、继承与多态以及异常处理。通过掌握这些知识,可以提高软件设计的质量和效率,在嵌入式领域中更加灵活地应对各种场景和问题。
4. 软件设计原理与模式
4.1 单例模式
4.1.1 原理介绍
单例模式是一种创建型设计模式,用于确保类只有一个实例,并提供一个全局访问点。在嵌入式领域中,单例模式常用于管理系统资源、设备驱动和全局配置等。
4.1.2 实现示例
class Singleton { private: static Singleton* instance; Singleton() {} // 禁止外部实例化 public: static Singleton* getInstance() { if (instance == nullptr) { instance = new Singleton(); } return instance; } }; Singleton* Singleton::instance = nullptr; int main() { Singleton* singleton = Singleton::getInstance(); // 使用singleton对象进行操作 return 0; }
4.1.3 对比分析
饿汉式单例模式 | 懒汉式单例模式 | |
实例化 | 类加载时创建 | 首次调用时创建 |
线程安全 | 是 | 否 |
性能 | 高 | 低 |
4.2 工厂模式
4.2.1 原理介绍
工厂模式是一种创建型设计模式,用于封装对象的创建过程。在嵌入式领域中,工厂模式常用于创建具有不同实现的对象,以便在运行时根据需求选择合适的实现。
4.2.2 实现示例
// 抽象产品类 class Product { public: virtual void operation() = 0; }; // 具体产品类A class ConcreteProductA : public Product { public: void operation() override { // 具体操作 } }; // 具体产品类B class ConcreteProductB : public Product { public: void operation() override { // 具体操作 } }; // 抽象工厂类 class Factory { public: virtual Product* createProduct() = 0; }; // 具体工厂类A class ConcreteFactoryA : public Factory { public: Product* createProduct() override { return new ConcreteProductA(); } }; // 具体工厂类B class ConcreteFactoryB : public Factory { public: Product* createProduct() override { return new ConcreteProductB(); } }; int main() { Factory* factory = new ConcreteFactoryA(); Product* product = factory->createProduct(); // 使用product对象进行操作 return 0; }
4.2.3 对比分析
简单工厂模式 | 工厂方法模式 | 抽象工厂模式 | |
类型 | 单个工厂类 | 多个工厂类 | 多个工厂类 |
扩展性 | 差 | 好 | 好 |
灵活性 | 差 | 好 | 好 |
【软件设计师备考 专题 】计算机专业英语:掌握基本词汇和阅读理解技巧(三)https://developer.aliyun.com/article/1467794