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

佛山新网站制作1688阿里巴巴首页

佛山新网站制作,1688阿里巴巴首页,国平seo,百度关键词搜索热度[抽象]工厂模式——创建型模式 什么是抽象工厂? 抽象工厂模式是一种创建型设计模式,让你能够保证在客户端程序中创建一系列有依赖的对象组时,无需关心这些对象的类型。 具体来说: 对象的创建与使用分离: 抽象工厂模…

[抽象]工厂模式——创建型模式

什么是抽象工厂?

抽象工厂模式是一种创建型设计模式,让你能够保证在客户端程序中创建一系列有依赖的对象组时,无需关心这些对象的类型。

具体来说:

  • 对象的创建与使用分离: 抽象工厂模式通过引入抽象工厂接口以及具体工厂类,将对象的创建与使用分离开来。这使得客户端代码与具体的产品类解耦,提高了系统的灵活性和可维护性。
  • 产品族的创建: 在某些情况下,一个系统需要一组相关或相互依赖的对象,而不是单个对象。抽象工厂模式可以方便地创建整个产品族,确保这些对象之间的兼容性和一致性。
  • 更易于替换产品系列: 通过使用抽象工厂模式,可以轻松地替换整个产品系列,而无需修改客户端代码。只需要更改具体工厂的实现即可实现产品族的变更,这种灵活性对于系统的扩展和维护非常有用。
  • 隐藏实现细节: 抽象工厂模式隐藏了实际产品的创建细节,客户端只需与抽象工厂接口进行交互,而不必关心具体产品是如何创建的。这有助于保持代码的简洁性和可读性。

什么是工厂模式?

对于工厂模式和抽象工厂模式的区别,个人认为:
工厂模式——工厂和产品是一对一的关系,即每个工厂只负责一个产品。
抽象工厂模式——工厂和产品是一对多的关系,即每个工厂负责一个产品族。

C++实现一版抽象工厂的例子:

在这里插入图片描述

说明:(个人理解总结)

  • 将工厂抽象的意义:产品系列的划分由后端写入到实体工厂中,客户端只需感知一个抽象工厂接口(传给客户端什么实体工厂,客户端就用什么),需要产品时由工厂代为构建,客户端只管使用产品所提供的方法即可,无需关注产品属于哪个系列。实现客户端与具体产品的解耦。
  • 将产品抽象的意义:在客户端通过工厂创建出产品后,此时这个产品的系列是不确定的(系列取决于实体工厂中的指定),此时为了实现客户端与产品的解耦,需要用抽象产品引用或指针进行接收。
/*************************************************************************> File Name: AbstractFactory.cpp> Author:> Mail:> Created Time: Fri Mar  8 14:51:39 2024************************************************************************/#include <iostream>using namespace std;// Abstarct product(File)
class AbstractFile {
public:virtual ~AbstractFile() = default;virtual void f_open() = 0;
};class File_Linux : public AbstractFile {
public:void f_open() override {// The logic of opening files in Linux.cout << "Opening files successful in Linux !!!" << endl;return ;}
};class File_Windows : public AbstractFile {
public:void f_open() override {// The logic of opening files in Windows.cout << "Opening files successful in Windows !!!" << endl;return ;}
};// Abstract product(Process)
class AbstractProcess {
public:virtual ~AbstractProcess() = default;virtual void create() = 0;
};class Process_Linux : public AbstractProcess {
public:void create() override {// The logic of create process in Linux.cout << "Create process successful in Linux !!!" << endl;return ;}
};class Process_Windows : public AbstractProcess {
public:void create() override {// The logic of create process in Windows.cout << "Create process successful in Windows !!!" << endl;return ;}
};// Abstarct Factory(Creating Product)
class AbstractFactory {
public:virtual AbstractFile* CreateFile() = 0;virtual AbstractProcess* CreateProcess() = 0;
};class LinuxFactory : public AbstractFactory {
public:AbstractFile* CreateFile() override {return new File_Linux();}AbstractProcess* CreateProcess() override {return new Process_Linux();}
};class WindowsFactory : public AbstractFactory {
public:AbstractFile* CreateFile() override {return new File_Windows();}AbstractProcess* CreateProcess() override {return new Process_Windows();}
};void ClientCode(AbstractFactory *factoy_obj) {AbstractFile *file = factoy_obj->CreateFile();file->f_open();AbstractProcess *process = factoy_obj->CreateProcess();process->create();delete file;delete process;
};int main() {LinuxFactory ins_linux;ClientCode(&ins_linux);WindowsFactory ins_windows;ClientCode(&ins_windows);return 0;
}
http://www.yayakq.cn/news/557766/

相关文章:

  • 百度权重10的网站seo关键词的选择步骤
  • 高端大气上档次的网站软件定制开发公司在哪里
  • 云南网站备案系统律师所网站建设
  • 无锡设计网站找哪家2二级域名免费
  • 电子商务网站接口费率网站建设公司墨子网络
  • 营销型网站建设公司易网拓中国建材工程建设协会网站
  • 免费视频网站app使用排名ppt模板免费整套下载
  • 各大搜索引擎网站登录入口谷歌建站哪家好
  • 网站建设吗上海的招聘网站有哪些
  • 怎么把文件放到网站的根目录梅州建站找哪家
  • 网站上海备案查询泰安房产网网上交易中心
  • 婚纱摄影网站设计模板在电脑上哪里可以做网站
  • 经典网站首页福田做网站怎么样
  • 网站建设与维护下载外贸公司出口退税申报流程
  • 养猪网站建设规划书中山精品网站建设价位
  • 都江堰网站建设培训wordpress 下载文件插件
  • 大型电商网站开发方案企业法人查询系统官网
  • 广告接单网站鹤岗市建设局网站
  • 海门网站建设制作做招聘网站赚钱吗
  • 旅游网站网页设计图片目录型搜索引擎有哪些
  • asp网站免费模板中国摄影在线网站
  • 英国免费做网站郑州网站优化公司
  • 新开传奇网站刚开一秒第一区阿里云网站建设教程
  • 龙岗网站设计那个网站做旅游规划好
  • 佛山家具网站建设公司展会网站建设 服务器选择很重要
  • 怎么促成客户做网站竞价网站做推广方案
  • 免费的网站模板哪里有南昌网站建设公司服务
  • 做那个男女的视频网站标志设计图片大全简单
  • 建自己的个人网站郑州网站建设外包
  • 购物网站建设建站漯河seo推广