如何将.NET中的简单工厂模式改写为支持长尾关键词的?

2026-03-30 11:171阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计825个文字,预计阅读时间需要4分钟。

如何将.NET中的简单工厂模式改写为支持长尾关键词的?

简单工厂模式(Simple Factory Pattern)是一种属于类创建型模式的模式,又称静态工厂方法模式(Static Factory Method Pattern)。它通过专门定义一个类来负责创建所需的对象,这个类被称为工厂类(Factory Class)。由工厂类决定实例化哪一个类来创建对象。被创建的对象通常是具有相同性质的,通常这些对象都实现了相同的接口。

简单工厂模式(Simple Factory Pattern)属于类的创建型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern)

是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

这个模式并不属于GoF23里面的设计模式,其实他属于一个过渡的模式,这个模式是为了引出下一篇要将的模式:工厂模式。

一、UML图

简单工厂模式解决的问题是如何去实例化一个合适的对象。

简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的过程。具体来说,把产品看着是一系列的类的集合,这些类是由某个抽象类或者接口派生出来的一个对象树。而工厂类用来产生一个合适的对象来满足客户的要求。

二、简单工厂模式的代码实现

public static Operation createOperate(string operate) { Operation oper = null; switch (operate) { case "+": { oper = new OperationAdd(); break; } case "-": { oper = new OperationSub(); break; } case "*": { oper = new OperationMul(); break; } case "/": { oper = new OperationDiv(); break; } } return oper; }

三、优缺点分析:

优点:客户端不需要修改代码。
缺点: 当需要增加新的运算类的时候,不仅需新加运算类,还要修改工厂类,违反了开闭原则。

四、.NET中简单工厂模式的实现

介绍完了简单工厂模式之后,.NET类库中也有类似的实现,NET中System.Text.Encoding类就实现了简单工厂模式,该类中的GetEncoding(int codepage)就是工厂方法具体的代码可以通过Reflector反编译工具进行查看

.NET 中Encoding的UML图为:

Encoding类中实现的简单工厂模式是简单工厂模式的一种演变,此时简单工厂类由抽象产品角色扮演,然而.NET中Encoding类是如何解决简单工厂模式中存在的问题的呢(即如果新添加一种编码怎么办)?在GetEncoding方法里的switch函数有如下代码:

switch (codepage) { ....... default: unicode = GetEncodingCodePage(codepage); if (unicode == null) { unicode = GetEncodingRare(codepage); //当编码很少见时 } break; ...... }

在GetEncodingRare方法里有一些不常用编码的实例化代码,微软正式通过这个方法来解决新增加一种编码的问题。(其实也就是列出所有可能的编码情况),微软之所以以这样的方式来解决这个问题,可能是由于现在编码已经稳定了,添加新编码的可能性比较低,所以在.NET 4.5仍然未改动这部分代码。

如何将.NET中的简单工厂模式改写为支持长尾关键词的?

到此这篇关于.Net设计模式之简单工厂模式(Simple Factory)的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。

本文共计825个文字,预计阅读时间需要4分钟。

如何将.NET中的简单工厂模式改写为支持长尾关键词的?

简单工厂模式(Simple Factory Pattern)是一种属于类创建型模式的模式,又称静态工厂方法模式(Static Factory Method Pattern)。它通过专门定义一个类来负责创建所需的对象,这个类被称为工厂类(Factory Class)。由工厂类决定实例化哪一个类来创建对象。被创建的对象通常是具有相同性质的,通常这些对象都实现了相同的接口。

简单工厂模式(Simple Factory Pattern)属于类的创建型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern)

是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

这个模式并不属于GoF23里面的设计模式,其实他属于一个过渡的模式,这个模式是为了引出下一篇要将的模式:工厂模式。

一、UML图

简单工厂模式解决的问题是如何去实例化一个合适的对象。

简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的过程。具体来说,把产品看着是一系列的类的集合,这些类是由某个抽象类或者接口派生出来的一个对象树。而工厂类用来产生一个合适的对象来满足客户的要求。

二、简单工厂模式的代码实现

public static Operation createOperate(string operate) { Operation oper = null; switch (operate) { case "+": { oper = new OperationAdd(); break; } case "-": { oper = new OperationSub(); break; } case "*": { oper = new OperationMul(); break; } case "/": { oper = new OperationDiv(); break; } } return oper; }

三、优缺点分析:

优点:客户端不需要修改代码。
缺点: 当需要增加新的运算类的时候,不仅需新加运算类,还要修改工厂类,违反了开闭原则。

四、.NET中简单工厂模式的实现

介绍完了简单工厂模式之后,.NET类库中也有类似的实现,NET中System.Text.Encoding类就实现了简单工厂模式,该类中的GetEncoding(int codepage)就是工厂方法具体的代码可以通过Reflector反编译工具进行查看

.NET 中Encoding的UML图为:

Encoding类中实现的简单工厂模式是简单工厂模式的一种演变,此时简单工厂类由抽象产品角色扮演,然而.NET中Encoding类是如何解决简单工厂模式中存在的问题的呢(即如果新添加一种编码怎么办)?在GetEncoding方法里的switch函数有如下代码:

switch (codepage) { ....... default: unicode = GetEncodingCodePage(codepage); if (unicode == null) { unicode = GetEncodingRare(codepage); //当编码很少见时 } break; ...... }

在GetEncodingRare方法里有一些不常用编码的实例化代码,微软正式通过这个方法来解决新增加一种编码的问题。(其实也就是列出所有可能的编码情况),微软之所以以这样的方式来解决这个问题,可能是由于现在编码已经稳定了,添加新编码的可能性比较低,所以在.NET 4.5仍然未改动这部分代码。

如何将.NET中的简单工厂模式改写为支持长尾关键词的?

到此这篇关于.Net设计模式之简单工厂模式(Simple Factory)的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。