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

网站重复新网站多久收录

网站重复,新网站多久收录,做个外贸网站一般需要多少钱,买实体服务器做网站一、工厂模式说明 工厂模式是一种创建型设计模式#xff0c;它提供了一种将对象的创建与使用分离的方式。工厂模式通过引入一个公共的接口来创建对象#xff0c;而不是通过直接调用构造函数来创建对象。这样做的好处是使得代码更加灵活#xff0c;更容易维护和扩展。 工厂模…一、工厂模式说明 工厂模式是一种创建型设计模式它提供了一种将对象的创建与使用分离的方式。工厂模式通过引入一个公共的接口来创建对象而不是通过直接调用构造函数来创建对象。这样做的好处是使得代码更加灵活更容易维护和扩展。 工厂模式通常包含以下几个角色 产品Product 产品是工厂模式所创建的对象。它可以是一个接口、抽象类或者具体类用来描述工厂创建的对象所具有的特性和行为。 工厂接口Factory Interface 工厂接口是用来创建产品对象的接口它定义了一个或多个工厂方法用来创建产品。通常情况下工厂接口是一个抽象类或者接口其中的工厂方法可以是抽象方法或者默认实现方法。 具体工厂Concrete Factory 具体工厂是工厂模式的实现者它实现了工厂接口负责创建具体的产品对象。每个具体工厂类通常都与一个特定的产品相关联用来创建该产品的实例。 客户端Client 客户端是使用工厂模式的地方它通过工厂接口来创建产品对象而不需要知道具体的产品类。客户端通常只与工厂接口和产品接口交互而不直接依赖具体的产品类。 二、工厂模式应用 在实际应用中的例子时有几个常见的场景 数据库连接池 在大多数现代应用程序中需要频繁地与数据库进行交互。为了提高性能和效率通常会使用数据库连接池。连接池是一组预先创建的数据库连接可以在需要时重新使用。工厂模式可用于创建这些数据库连接以便统一管理连接的创建和销毁。例如可以使用工厂方法模式创建不同类型的数据库连接对象如 MySQL 连接、PostgreSQL 连接等。 日志记录器 许多应用程序需要记录事件和错误信息以便后期分析和调试。日志记录器是用于记录这些信息的工具。工厂模式可用于创建不同类型的日志记录器如文件日志记录器、数据库日志记录器、控制台日志记录器等。根据应用程序的需求可以选择合适的日志记录器类型。例如可以使用抽象工厂模式来创建不同类型的日志记录器对象并使用配置文件或其他参数来确定要创建的日志记录器类型。 UI控件库 在图形用户界面GUI应用程序中UI控件库用于创建和管理各种用户界面元素如按钮、文本框、标签等。工厂模式可用于创建这些UI控件。例如可以使用简单工厂模式创建不同类型的UI控件对象并提供统一的接口来访问这些控件。这样可以降低客户端代码与具体控件实现之间的耦合并提高代码的灵活性和可维护性。 加密算法库 在安全领域中加密算法是非常重要的组成部分。工厂模式可用于创建不同类型的加密算法对象如对称加密算法、非对称加密算法等。例如可以使用工厂方法模式创建不同类型的加密算法对象并提供统一的接口来加密和解密数据。这样可以方便地切换和使用不同类型的加密算法而不影响客户端代码。 游戏开发 在游戏开发中经常需要创建各种游戏对象如角色、道具、怪物等。工厂模式可用于创建这些游戏对象。例如可以使用工厂方法模式创建不同类型的游戏对象并提供统一的接口来处理游戏逻辑。这样可以方便地扩展和修改游戏中的对象而不需要修改客户端代码。 三、 工厂模式的实现 (一) 简单工厂模式 简单工厂模式Simple Factory Pattern是一种创建型设计模式它提供了一个专门的工厂类用于创建对象而不需要将对象的创建逻辑暴露给客户端。简单工厂模式通过将对象的创建过程封装在工厂类中使得客户端无需知道具体的实例化逻辑只需要通过工厂类来获取所需的对象。 简单工厂模式由三个主要组成部分构成 工厂类Factory Class工厂类负责创建对象的实例。通常包含一个静态方法或成员方法根据客户端的请求创建并返回具体的对象实例。客户端通过调用工厂类的方法获取所需的对象。 抽象产品类Abstract Product Class抽象产品类定义了所创建的对象的通用接口客户端通过该接口与具体产品进行交互。工厂类负责创建的对象都是抽象产品类的子类对象。 具体产品类Concrete Product Class具体产品类是抽象产品类的具体实现它实现了抽象产品类定义的接口并提供了具体的功能和行为。 #include iostream #include memory// 抽象产品类 class Product { public:virtual void showInfo() 0;virtual ~Product() {} };// 具体产品接口1颜色属性 - 这边是为了实现 接口隔离原则 class Colorable { public:virtual void setColor(const std::string color) 0;virtual std::string getColor() const 0;virtual ~Colorable() {} };// 具体产品类电子产品 class ElectronicProduct : public Product { public:void showInfo() override {std::cout Electronic Product: Smart Phone\n;} };// 具体产品类服装 class ClothingProduct : public Product, public Colorable { private:std::string color; public:void showInfo() override {std::cout Clothing Product: T-Shirt\n;}void setColor(const std::string color) override {this-color color;}std::string getColor() const override {return color;} };// 具体产品类食品 class FoodProduct : public Product { public:void showInfo() override {std::cout Food Product: Chocolate\n;} };// 简单工厂类 class ProductFactory { public:// 根据传入的参数创建不同类型的产品对象std::unique_ptrProduct createProduct(char type) {switch (type) {case E:return std::make_uniqueElectronicProduct();case C:return std::make_uniqueClothingProduct();case F:return std::make_uniqueFoodProduct();default:std::cerr Invalid product type\n;return nullptr;}} };int main() {// 使用简单工厂创建不同类型的商品对象ProductFactory factory;std::unique_ptrProduct product1 factory.createProduct(E);if (product1) {product1-showInfo();}std::unique_ptrProduct product2 factory.createProduct(C);if (product2) {product2-showInfo();Colorable* colorableProduct dynamic_castColorable*(product2.get());if (colorableProduct) {colorableProduct-setColor(Red);std::cout Color: colorableProduct-getColor() std::endl;}}std::unique_ptrProduct product3 factory.createProduct(F);if (product3) {product3-showInfo();}return 0; }(二) 工厂方法模式 工厂方法模式Factory Method Pattern是一种创建型设计模式它定义了一个用于创建对象的接口但是将具体对象的创建延迟到了子类中。这样工厂方法模式允许一个类的实例化延迟到子类中从而使得一个类的实例化与子类的具体实现解耦。 工厂方法模式由四个主要组成部分构成 抽象产品类Abstract Product Class定义了工厂方法所创建的对象的接口客户端通过该接口与具体产品进行交互。 具体产品类Concrete Product Class具体产品类是抽象产品类的实现它定义了具体产品的属性和行为。 抽象工厂类Abstract Factory Class抽象工厂类定义了一个抽象的工厂方法该方法返回一个抽象产品类的实例。该类可以是抽象类或接口。 具体工厂类Concrete Factory Class具体工厂类是抽象工厂类的实现它实现了抽象工厂类定义的工厂方法负责创建具体的产品对象。 #include iostream #include memory// 抽象产品类 class Product { public:virtual void showInfo() 0;virtual ~Product() {} };// 具体产品类电子产品 class ElectronicProduct : public Product { public:void showInfo() override {std::cout Electronic Product: Smart Phone\n;} };// 具体产品类服装 class ClothingProduct : public Product { public:void showInfo() override {std::cout Clothing Product: T-Shirt\n;} };// 具体产品类食品 class FoodProduct : public Product { public:void showInfo() override {std::cout Food Product: Chocolate\n;} };// 抽象工厂类 class ProductFactory { public:virtual std::unique_ptrProduct createProduct() 0;virtual ~ProductFactory() {} };// 具体工厂类电子产品工厂 class ElectronicProductFactory : public ProductFactory { public:std::unique_ptrProduct createProduct() override {return std::make_uniqueElectronicProduct();} };// 具体工厂类服装工厂 class ClothingProductFactory : public ProductFactory { public:std::unique_ptrProduct createProduct() override {return std::make_uniqueClothingProduct();} };// 具体工厂类食品工厂 class FoodProductFactory : public ProductFactory { public:std::unique_ptrProduct createProduct() override {return std::make_uniqueFoodProduct();} };int main() {// 使用具体工厂类来创建产品对象std::unique_ptrProductFactory electronicFactory std::make_uniqueElectronicProductFactory();std::unique_ptrProduct product1 electronicFactory-createProduct();product1-showInfo();std::unique_ptrProductFactory clothingFactory std::make_uniqueClothingProductFactory();std::unique_ptrProduct product2 clothingFactory-createProduct();product2-showInfo();std::unique_ptrProductFactory foodFactory std::make_uniqueFoodProductFactory();std::unique_ptrProduct product3 foodFactory-createProduct();product3-showInfo();return 0; }(三) 抽象工厂模式 抽象工厂模式Abstract Factory Pattern是一种创建型设计模式它提供了一个接口用于创建一系列相关或相互依赖的对象而无需指定它们的具体类。抽象工厂模式通过引入抽象工厂类和具体工厂类来实现对象的创建使得客户端可以从抽象工厂类中获取具体工厂类的实例进而创建所需的产品对象。 抽象工厂模式由四个主要组成部分构成 抽象产品类Abstract Product Class定义了工厂方法所创建的对象的接口客户端通过该接口与具体产品进行交互。 具体产品类Concrete Product Class具体产品类是抽象产品类的实现它定义了具体产品的属性和行为。 抽象工厂类Abstract Factory Class抽象工厂类定义了一个抽象的工厂方法该方法返回一个抽象产品类的实例。抽象工厂类可以是一个接口或者抽象类。 具体工厂类Concrete Factory Class具体工厂类是抽象工厂类的实现它实现了抽象工厂类定义的工厂方法并负责创建具体的产品对象。 #include iostream #include memory// 抽象产品类 class ElectronicProduct { public:virtual void showInfo() 0;virtual ~ElectronicProduct() {} };class ClothingProduct { public:virtual void showInfo() 0;virtual ~ClothingProduct() {} };// 具体产品类手机 class SmartPhone : public ElectronicProduct { public:void showInfo() override {std::cout Smart Phone\n;} };// 具体产品类T恤 class TShirt : public ClothingProduct { public:void showInfo() override {std::cout T-Shirt\n;} };// 抽象工厂类 class AbstractFactory { public:virtual std::unique_ptrElectronicProduct createElectronicProduct() 0;virtual std::unique_ptrClothingProduct createClothingProduct() 0;virtual ~AbstractFactory() {} };// 具体工厂类电子产品工厂 class ElectronicFactory : public AbstractFactory { public:std::unique_ptrElectronicProduct createElectronicProduct() override {return std::make_uniqueSmartPhone();}std::unique_ptrClothingProduct createClothingProduct() override {// 在这个工厂中我们无法创建服装产品因此返回 nullptrreturn nullptr;} };// 具体工厂类服装工厂 class ClothingFactory : public AbstractFactory { public:std::unique_ptrElectronicProduct createElectronicProduct() override {// 在这个工厂中我们无法创建电子产品因此返回 nullptrreturn nullptr;}std::unique_ptrClothingProduct createClothingProduct() override {return std::make_uniqueTShirt();} };int main() {// 创建电子产品工厂并使用std::unique_ptrAbstractFactory electronicFactory std::make_uniqueElectronicFactory();std::unique_ptrElectronicProduct electronicProduct electronicFactory-createElectronicProduct();if (electronicProduct) {electronicProduct-showInfo();}// 创建服装工厂并使用std::unique_ptrAbstractFactory clothingFactory std::make_uniqueClothingFactory();std::unique_ptrClothingProduct clothingProduct clothingFactory-createClothingProduct();if (clothingProduct) {clothingProduct-showInfo();}return 0; } 四、工厂模式总结 工厂模式类型 优点 缺点 适用场景 简单工厂模式 Simple Factory Pattern - 实现简单易懂 - 将对象创建和使用解耦 - 违反开闭原则 - 工厂类集中了所有产品的创建逻辑 - 产品较少 - 产品不经常变化 工厂方法模式 Factory Method Pattern - 符合开闭原则 - 延迟对象的创建 - 增加灵活性 - 每次新增产品都需要编写一个具体工厂类 - 产品具有相同接口 - 创建逻辑相对复杂的情况 抽象工厂模式 Abstract Factory Pattern - 将对象创建和使用解耦 - 符合开闭原则 - 新增产品族比较困难 - 需要修改抽象工厂接口及实现类 - 创建一系列相关产品对象 - 保证产品族一致性
http://www.zqtcl.cn/news/9902/

相关文章:

  • 自助网站建设方案泰兴网页定制
  • 网站首页设计欣赏西安网站建设运维
  • 饮料企业哪个网站做的比较好那个网站可以做软件出售的
  • 微信公众号的跳转网站怎么做的域名购买后网站搭建
  • 小米路由器建设网站百度快照关键词推广
  • wordpress付费商业站网站开发及app开发报价
  • 化妆品购物网站开发的意义网站后台管理系统域名
  • 总部基地网站建设企业商务网站建设
  • 销售网站的技巧5118网站是免费的吗
  • 赣州市建设局建管科网站怎么建公司免费网站
  • 站斧浏览器网站链接的常见形式
  • 深圳做微信网站公司c 做网站设计
  • 湘潭做网站 就问磐石网络建设股份有限公司
  • 常州模板网站建设企业网页设计与制作需要学什么软件
  • 广州定制型网站建设用dw做购物网站
  • 怎么做网站免费学wordpress要多久
  • mysql php网站开发域名解析过程
  • 英文网站群建设WordPress徽章系统
  • 企业网站建设中在方案设计上重庆市招投标公共资源交易中心
  • 个人网站设计与开发wap网站生成小程序
  • 网站建设有哪些项目品牌商标设计logo
  • 怎么在国外做网站网站关键词快速排名优化
  • wordpress menu order为网站做seo需要什么
  • 制作网站需要多少费用沈阳营销型网站设计教程
  • 汉南做网站做网站运营需要具备哪些能力
  • 网站建设七大步骤seo排名点击软件运营
  • 电脑手机网站制作seo投放营销
  • 有没有人做网站哪家公司网站做得好
  • 中国外贸网seo优化网站快速排名
  • 粒子特效网站会计培训机构排名前十