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

上海著名网站设计公司本地的wordpress地址

上海著名网站设计公司,本地的wordpress地址,哈尔滨网络建设网络优化,如何做网站代码在面向对象编程(OOP)的世界中,简单工厂模式(Simple Factory Pattern) 是一种非常常见且实用的设计模式。虽然它并不属于GoF(Gang of Four)定义的23种经典设计模式之一,但它是理解更复…

在面向对象编程(OOP)的世界中,简单工厂模式(Simple Factory Pattern) 是一种非常常见且实用的设计模式。虽然它并不属于GoF(Gang of Four)定义的23种经典设计模式之一,但它是理解更复杂模式(如工厂方法模式)的重要铺垫。本文将深入解析简单工厂模式的工作原理、实现方式及其在实际项目中的作用。


一、什么是简单工厂模式?

简单工厂模式是一种创建型设计模式,它的核心思想是:根据输入的参数或条件,返回一个特定类的实例。这些类通常继承自同一个基类或接口,具有相同的方法签名,但方法的具体实现可能不同。

简单工厂模式通过一个“工厂”类来封装对象的创建逻辑,使得客户端无需关心具体的对象创建过程,只需要调用工厂提供的接口即可获取所需对象。


二、简单工厂模式的结构解析

我们通过一个类图来理解简单工厂模式的核心组成部分:

  • 基类(Base Class):定义了所有子类共有的接口。
  • 具体类(Concrete Classes):继承自基类,实现具体的业务逻辑。
  • 工厂类(Factory Class):根据传入的参数决定返回哪一个具体类的实例。

以一个名字解析器为例,假设我们有如下类结构:

  • Namer:基类,提供基础属性和方法。
  • FirstFirst:表示“firstname lastname”格式。
  • LastFirst:表示“lastname, firstname”格式。
  • NamerFactory:简单工厂类,根据输入判断使用哪个具体类解析名字。

三、一个C#示例:名字解析器

1. 定义基类 Namer

public class Namer
{protected string frName, lName;public string GetFrname(){return frName;}public string GetLname(){return lName;}
}

该类定义了两个受保护的字段 frNamelName,并提供公共方法来获取它们。


2. 实现具体类 FirstFirstLastFirst

FirstFirst 类处理“firstname lastname”格式:

public class FirstFirst : Namer
{public FirstFirst(string name){int i = name.Trim().IndexOf(" ");if (i > 0){frName = name.Substring(0, i).Trim();lName = name.Substring(i + 1).Trim();}else{lName = name;frName = "";}}
}

LastFirst 类处理“lastname, firstname”格式:

public class LastFirst : Namer
{public LastFirst(string name){int i = name.IndexOf(",");if (i > 0){lName = name.Substring(0, i);frName = name.Substring(i + 1).Trim();}else{lName = name;frName = "";}}
}

这两个派生类都通过构造函数对传入的字符串进行解析,并将结果保存在基类字段中。


3. 构建简单工厂类 NamerFactory

public class NamerFactory
{public Namer CreateNamer(string name){if (name.Contains(","))return new LastFirst(name);elsereturn new FirstFirst(name);}
}

工厂类根据输入是否包含逗号来决定返回哪一个具体类的实例。


4. 客户端调用示例

class Program
{static void Main(string[] args){NamerFactory factory = new NamerFactory();Namer namer1 = factory.CreateNamer("John Doe");Console.WriteLine($"First Name: {namer1.GetFrname()}, Last Name: {namer1.GetLname()}");Namer namer2 = factory.CreateNamer("Doe, John");Console.WriteLine($"First Name: {namer2.GetFrname()}, Last Name: {namer2.GetLname()}");}
}

输出结果:

First Name: John, Last Name: Doe
First Name: John, Last Name: Doe

四、简单工厂模式的优点与局限

✅ 优点:

  1. 封装对象创建逻辑:客户端不需要关心具体类的创建过程,只需调用工厂接口。
  2. 提高可扩展性:新增一个具体类只需修改工厂逻辑,而不影响已有代码。
  3. 统一接口:所有返回对象都继承自同一个基类或接口,便于统一调用。

⚠️ 局限:

  1. 违反开放封闭原则:每次新增一个具体类,都需要修改工厂类的判断逻辑。
  2. 不适合大规模扩展:当具体类数量激增时,判断逻辑会变得复杂且难以维护。
  3. 不属于GoF模式:不被广泛认为是“标准”的设计模式,需谨慎使用。

五、简单工厂模式的适用场景

  1. 产品种类有限:适用于需要创建的对象类型不多的场景。
  2. 简化客户端调用:当客户端不希望处理复杂的对象创建逻辑时。
  3. 作为工厂方法模式的前奏:为后续引入更高级的工厂方法模式打下基础。

六、从简单工厂到工厂方法模式的演进

简单工厂模式虽然实用,但其“集中决策”的特性限制了它的扩展性。在工厂方法模式中,每个具体类都有自己的工厂类,客户端通过调用不同的工厂来获取实例,从而实现对扩展开放、对修改关闭的设计原则。

例如:

public interface INamerFactory
{Namer CreateNamer(string name);
}public class FirstFirstFactory : INamerFactory 
{public Namer CreateNamer(string name){return new FirstFirst(name);}
}

这种结构允许系统在不修改现有代码的情况下灵活扩展新的产品类型。


结语:选择合适的模式,构建高质量系统

简单工厂模式作为一个轻量级的设计模式,非常适合在中小型项目或模块中使用。它可以帮助我们快速实现对象的创建逻辑封装,提高代码的可读性和可维护性。然而,随着业务逻辑的复杂化和对象种类的增加,我们应考虑向更高级的设计模式(如工厂方法模式、抽象工厂模式)进行演进。

设计模式的本质,不是为了炫技,而是为了更好地组织代码、提高系统的可维护性与可扩展性。


http://www.dtcms.com/a/538293.html

相关文章:

  • 文本向量化与 Pinecone 向量存储:RAG性能提升指南
  • 清远网站制作公司淘客做网站怎么备案
  • 网站首页制作方案西安网站建设网站推广
  • 网站消耗流量长沙网站 建设推广世云网络
  • 如何改进网站服务建设和管理寿光网站优化
  • 怎样添加网站地图宿迁专业网站建设公司
  • 设计商城网站建设琼筑网站是哪家做的
  • 会搭建网站找什么工作室温州网页制作模板
  • Python基于实战练习的知识点回顾
  • 站群服务器是什么意思主流网站开发工具
  • Java的throws异常处理
  • 想在网上做外卖 上什么网站好站长工具2023最新国产
  • 重庆塔吊证查询网站一个网站放两个vps
  • 收录很快的推广网站北京定制公交app
  • 电子电力技术的软开关变换器学习记录分享2
  • 普陀区网站制作网站群建设 实现了
  • 国家示范校建设专题网站全国公共资源交易中心
  • 4.1进行网站建设与推广太原网站推广教程
  • ROS2系列 (1) : 常用环境变量解析与实践
  • 舆情分析报告格式济南网站搜索优化
  • 5.4静态变量和静态方法
  • 蓝蜂MQTT网关保障20个户外泵站数据,故障率降70%
  • 实现Docker登录状态定时自动失效的通用方法
  • 广西网站建设推荐全文搜索引擎有哪些
  • 打开无忧管理后台网站厦门网站优化
  • 科技网页制作模板电商网站目录优化
  • 网站名和域名能一样吗wordpress mp4 插件下载
  • 什么是模型的置信度
  • 微网站建设网络网络推广平台有哪些公司
  • 青岛seo网站排名电子商务有什么职业