当前位置: 首页 > wzjs >正文

海南省住房和城乡建设厅网站网上版网站推广模式

海南省住房和城乡建设厅网站网上版,网站推广模式,专业移动网站建设商,市场营销管理是做什么的在C中,设计模式(Design Patterns)是用于解决在软件设计中经常遇到的一些通用问题的最佳实践。这些设计模式是在多年的软件开发过程中积累下来的经验和智慧的结晶。它们可以帮助开发者设计出更加灵活、可维护、可扩展的软件系统。以下是一些在…

在C++中,设计模式(Design Patterns)是用于解决在软件设计中经常遇到的一些通用问题的最佳实践。这些设计模式是在多年的软件开发过程中积累下来的经验和智慧的结晶。它们可以帮助开发者设计出更加灵活、可维护、可扩展的软件系统。以下是一些在C++中常用的设计模式,详细见22种设计模式。

1、单例模式(Singleton Pattern):
确保一个类只有一个实例,并提供一个全局访问点。

class Singleton {  
private:  static Singleton* instance;  Singleton() {}  Singleton(const Singleton&) = delete;  Singleton& operator=(const Singleton&) = delete;  
public:  static Singleton* getInstance() {  if (!instance) {  instance = new Singleton();  }  return instance;  }  // ... 其他成员函数 ...  
};  Singleton* Singleton::instance = nullptr;

注意:上述这种写法并非线程安全的,为了保证单例的线程安全,有以下几种方式:

饿汉式(立即初始化):

class Singleton {  
public:  static Singleton& getInstance() {  return instance;  }  Singleton(const Singleton&) = delete;  Singleton& operator=(const Singleton&) = delete;  private:  Singleton() {}  static Singleton instance; // 静态局部变量,在类加载时初始化  
};  Singleton Singleton::instance; // 静态成员变量在类外初始化

懒汉式(双重检查锁):

class Singleton {  
public:  static Singleton& getInstance() {  if (instance == nullptr) { // 第一次检查  std::lock_guard<std::mutex> lock(mutex); // 加锁  if (instance == nullptr) { // 第二次检查  instance = new Singleton();  }  }  return *instance;  }  Singleton(const Singleton&) = delete;  Singleton& operator=(const Singleton&) = delete;  private:  Singleton() {}  static Singleton* instance;  static std::mutex mutex; // 用于同步的互斥量  
};  Singleton* Singleton::instance = nullptr;  
std::mutex Singleton::mutex;

静态内部类(C++11以后推荐):

class Singleton {  
public:  static Singleton& getInstance() {  return SingletonHolder::instance;  }  Singleton(const Singleton&) = delete;  Singleton& operator=(const Singleton&) = delete;  private:  Singleton() {}  struct SingletonHolder {  static Singleton instance;  };  static SingletonHolder holder; // 静态成员变量,保证在第一次调用getInstance时初始化  
};  Singleton::SingletonHolder Singleton::holder; // 静态成员变量在类外初始化  
Singleton Singleton::SingletonHolder::instance; // 静态局部对象,在holder初始化时初始化

2、工厂模式(Factory Pattern):
用于封装对象的创建过程,隐藏创建细节,使得代码更加灵活和可扩展。工厂模式主要分三种:简单工厂模式、工厂方法模式和抽象工厂模式。

简单工厂模式:

// 产品接口  
class Product {  
public:  virtual ~Product() {}  virtual void use() = 0;  
};  // 产品实现  
class ProductA : public Product {  
public:  void use() override {  std::cout << "Using ProductA" << std::endl;  }  
};  class ProductB : public Product {  
public:  void use() override {  std::cout << "Using ProductB" << std::endl;  }  
};  // 简单工厂类  
class SimpleFactory {  
public:  static Product* createProduct(const std::string& type) {  if (type == "A") {  return new ProductA();  } else if (type == "B") {  return new ProductB();  }  return nullptr;  }  
};  // 客户端代码  
int main() {  Product* productA = SimpleFactory::createProduct("A");  if (productA) {  productA->use();  delete productA;  }  Product* productB = SimpleFactory::createProduct("B");  if (productB) {  productB->use();  delete productB;  }  return 0;  
}

工厂方法模式:

// 产品接口  
class Product {  
public:  virtual ~Product() {}  virtual void use() = 0;  
};  // 产品实现  
class ProductA : public Product {  
public:  void use() override {  std::cout << "Using ProductA" << std::endl;  }  
};  class ProductB : public Product {  
public:  void use() override {  std::cout << "Using ProductB" << std::endl;  }  
};  // 工厂接口  
class Creator {  
public:  virtual ~Creator() {}  virtual Product* createProduct() = 0;  
};  // 工厂实现  
class CreatorA : public Creator {  
public:  Product* createProduct() override {  return new ProductA();  }  
};  class CreatorB : public Creator {  
public:  Product* createProduct() override {  return new ProductB();  }  
};  // 客户端代码  
int main() {  Creator* creatorA = new CreatorA();  Product* productA = creatorA->createProduct();  productA->use();  delete productA;  delete creatorA;  Creator* creatorB = new CreatorB();  Product* productB = creatorB->createProduct();  productB->use();  delete productB;  delete creatorB;  return 0;  
}

抽象工厂模式:

// 产品接口  
class ProductA {  
public:  virtual ~ProductA() {}  virtual void use() = 0;  
};  class ProductB {  
public:  virtual ~ProductB() {}  virtual void use() = 0;  
};  // 产品实现  
class ProductA1 : public ProductA {  
public:  void use() override {  std::cout << "Using ProductA1" << std::endl;  }  
};  class ProductB1 : public ProductB {  
public:  void use() override {  std::cout << "Using ProductB1" << std::endl;  }  
};  // 抽象工厂接口  
class AbstractFactory {  
public:  virtual ~AbstractFactory() {}  virtual ProductA* createProductA() = 0;  virtual ProductB* createProductB() = 0;  
};  // 工厂实现  
class Factory1 : public AbstractFactory {  
public:  ProductA* createProductA() override {  return new ProductA1();  }  ProductB* createProductB() override {  return new ProductB1();  }  
};  // 客户端代码  
int main() {  AbstractFactory* factory = new Factory1();  ProductA* productA = factory->createProductA();  ProductB* productB = factory->createProductB();  productA->use();  productB->use();

3、观察者模式(Observer Pattern):
定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象状态发生改变时,它的所有依赖者(观察者)都会自动收到通知并更新。

class Subject {  // ...  std::list<Observer*> observers;  void notify() {  for (auto observer : observers) {  observer->update();  }  }  // ...  
};  class Observer {  
public:  virtual void update() = 0;  // ...  
};

4、建造者模式(Builder Pattern):
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

class Builder {  
public:  virtual void buildPartA() = 0;  virtual void buildPartB() = 0;  // ...  virtual Product* getResult() = 0;  
};  class ConcreteBuilder : public Builder {  Product* product;  // 实现构建过程  // ...  
};  class Director {  
public:  void construct(Builder* builder) {  builder->buildPartA();  builder->buildPartB();  // ...  }  
};

5、原型模式(Prototype Pattern):
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

class Prototype {  
public:  virtual Prototype* clone() = 0;  // ...  
};  class ConcretePrototype : public Prototype {  
public:  ConcretePrototype* clone() override {  return new ConcretePrototype(*this); // 拷贝构造函数实现克隆  }  // ...  
};

6、适配器模式(Adapter Pattern):
将一个类的接口转换成客户端所期望的另一种接口,从而使得原本由于接口不兼容而无法一起工作的类能够一起工作。
7、迭代器模式(Iterator Pattern):
提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
8、组合模式(Composite Pattern):
将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
9、模板方法模式(Template Method Pattern):
定义一个操作中的算法的框架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
10、策略模式(Strategy Pattern):
定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换。策略模式使得算法可以独立于使用它的客户端变化。


以上只是设计模式中的一部分,还有其他许多设计模式可以在C++中使用。学习和理解这些设计模式可以帮助你更好地设计出高质量的软件系统。

http://www.dtcms.com/wzjs/323148.html

相关文章:

  • 狗和人做愛网站谁知道营口建网站的公司
  • 长春仿站定制模板建站外贸网站建设平台
  • 做国外网站用什么颜色百度热搜榜今日头条排名
  • 官方网站下载穿越火线营销策略有哪几种
  • 网站建设费用及预算360搜索首页
  • 汕头网站制作服务商站内搜索引擎
  • asp网站做seo搜索引擎营销的特点有
  • qfd 网站开发cilimao磁力猫最新版地址
  • WordPress模板资源下载站seo搜索引擎优化总结
  • seo系统oemseo平台优化服务
  • 免费网站建设培训学校网站服务器
  • 设计上海网站建设百度大数据分析
  • 建设银行香港官方网站百度百科词条入口
  • 网站限制无锡优化网站排名
  • 怎样做销售产品网站西安推广平台排行榜
  • 域名展示网站源码韩国vs加纳分析比分
  • 网站seo新闻做任务赚佣金的正规平台
  • 培训学校网站系统谷歌搜索引擎官网
  • 网站建设的一些名词网域名解析ip查询
  • 如何设公司产品购物网站百度推广登录入口官网
  • 网站设计公司石家庄深圳网络营销推广培训
  • 怎么使用网站上的模板seo技术培训课程
  • 怎么做国外网站软文推广例子
  • 蒙古文网站建设的通知市场推广方法
  • 如何把物流做免费网站南宁seo咨询
  • 欢迎访问建设银行网站军事新闻头条最新消息
  • 如何查找昆明公司的网站快速网站推广优化
  • 简要说明网站建设的步骤关键字有哪些
  • 天津去山西高铁做哪个网站人工在线客服
  • 哪些网站可以看一级a做爰片网络广告投放网站