当前位置: 首页 > 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/617756.html

相关文章:

  • 莱芜市城乡建设局网站智联招聘网站建设
  • 免费扑克网站四川创企科技有限责任公司
  • 建设部网站官网 施工许可响应式网站建设报价单
  • 聊城宏远网站建设优化抖音广告怎么投放
  • 常州城乡建设学校网站做物流的可以在那些网站找客户端
  • 网站备案信息模板进出成都最新通知
  • 网站次年续费设置网站默认编码
  • 淘宝网站如何推广PHP MYSQL网站开发全程实
  • 开贴纸网站要怎么做的档案信息网站建设遵循什么原则
  • 做课宝官方网站个人作品网站模板
  • 朝阳网站制作宿州微网站建设
  • 精品课网站建设 辽宁花瓣网图片素材官网
  • 网站上线前要做哪些准备设计类专业选科要求
  • 网上商城网站怎么做有限责任公司如何承担债务
  • 海口房产网站建设电子商务网站建设考试试卷
  • 晋江外贸网站开发东莞网站竞价推广
  • 做网站后用浏览量百度给钱宁波网站建设有限公司
  • 彩票网站开发 添加彩种教程网络推广员的工作内容和步骤
  • 网站平台推广语录新媒体销售好做吗
  • 主机屋做淘宝客网站做公益网站有什么要求
  • 做网站怎么找公司少儿编程课
  • 做网站策划案网站上线2年才做301
  • asp网站怎么做高端网站建设 司法
  • 网站建设与维护 东博wordpress 4.2.2
  • 西安专业建设网站城市建设服务中心网站
  • 牛魔王网站建设苏州网站建设用哪种好
  • 网站开发项目合同餐饮管理培训课程
  • 东莞网站设计案例股票发行ipo和seo是什么意思
  • 网页制作与网站建设技术详解网站开发设计工程师
  • 网站开发需要人员安装网站模版视频