官术网_书友最值得收藏!

  • Expert C++
  • Vardan Grigoryan Shunguang Wu
  • 251字
  • 2021-06-24 16:34:04

Design patterns

Design patterns are one of the most expressive tools for programmers. They allow us to solve design problems in an elegant and well-tested way. When you are struggling to provide the best possible design of your classes and their relationship, a well-known design pattern may come to the rescue.

The simplest example of a design pattern is a Singleton. It provides us with a way to declare and use only one instance of the class. For example, suppose that the e-commerce platform has only one Warehouse. To access the Warehouse class, the project may require that we include and use it in many source files. To keep things in sync, we should make the Warehouse a Singleton:

class Warehouse {
public:
static create_instance() {
if (instance_ == nullptr) {
instance_ = new Warehouse();
}
return instance_;
}

static remove_instance() {
delete instance_;
instance_ = nullptr;
}

private:
Warehouse() = default;

private:
static Warehouse* instance_ = nullptr;
};

We declared a static Warehouse object and two static functions for creating and destroying the corresponding instance. The private constructor leads to a compile error each time the user tries to declare a Warehouse object in the old way. To be able to use the Warehouse, the client code has to call the create_instance() function:

Warehouse* w = Warehouse::create_instance();
Product book;
w->add_product(book);
Warehouse::remove_instance();

The singleton implementation of the Warehouse is not complete and is just an example to introduce design patterns. We will introduce more design patterns throughout this book.

主站蜘蛛池模板: 太仆寺旗| 定兴县| 克什克腾旗| 海城市| 石阡县| 佛坪县| 武邑县| 巴彦县| 安丘市| 萝北县| 阿勒泰市| 东阿县| 宣威市| 北京市| 金沙县| 游戏| 苍梧县| 陈巴尔虎旗| 镶黄旗| 鄂州市| 泽州县| 乌拉特后旗| 台南县| 哈巴河县| 江孜县| 赤城县| 济阳县| 剑川县| 滦平县| 措勤县| 双峰县| 隆化县| 宁安市| 砀山县| 于都县| 濉溪县| 思茅市| 辽宁省| 剑河县| 上林县| 两当县|