逻辑框架法的模式 .NET 框架中的 Factory 模式
.NET 框架中的 Factory 模式
Factory 模式是一种非常基本同时也是被广泛使用的设计模式 我在这里就不多说了 这种模式在框架程序设 计中经常被采用 今天就说一下在 NET 框架下的一个使用例子 首先请大家看一下如下代码段

int iCount = System Text Encoding Default GetByteCount(calStr Trim()); byte[] b = Encoding Default GetBytes(str); Encoding encode = Encoding GetEncoding(this FileEncode);
相信大家对于这样的代码司空见惯了吧 本人也是在使用很长一段时间之后 才对里面的实现方式发生兴趣的 在了解了基本的算法逻辑后 发现这个名Encoding这个抽象类的部分代码是使用 Factory 模式实现的 为了清楚说明这个问题 本人将Factory 模式的基本结构图先发上来 另外本人还附一张相应 Encoding 实现的结构图 以便大家对比参照 Factory 图 net Encoding 结构图 这里需要说明的是Factory 结构图中的SimpleFactory部分在Encoding 代码中被合并了 原因我猜应该是为了方便调用 和维护 如果把GetEncoding() 拿出来放到SimpleFactory中 也只是 搬个家 而已 另外就是封装到了Encoding中同样也 会出现工厂模式所不可回避的问题就是如果新增加一种编码怎么办?让我们看看微软所做的一些 尝试 : 在GetEncoding(Int )函数里的switch 有如下代码
switch (codepage) { default: unicode = GetEncodingCodePage(codepage); if (unicode == null) { unicode = GetEncodingRare(codepage); //当编码很少见时 } break; }
在GetEncodingRare里面有一些少见编码的实例化调用 具体的声明我就不多说了 大家可以用 Reflactor 到 mscorlib 下的System Text Encoding GetEncodingRare(int codepage)函数即可 看到里 面的还有一些没有实现的case 条件段大家就应该明白了 而有关codepage 设置参见 另外就是框架本身更新的速度还是非常快的(微软可能在将来某个版本中改动这部分的代码 但目 框架下未发生变化) 当然解决新加编码的方式不止一种 有人建议用反射 也有说用 factory method 的 这 里就不多做介绍了 (例如:) 还有一个地方就是如下对属性的声明
lishixinzhi/Article/program/ASP/201311/21701相关文章
- 商业逻辑的本质 什么是《商业的本质》
- 生产管理系统界面 生产管理系统主窗口设计及实现代码[1]
- 设计模式一般用来解决 从C#的Singleton设计模式实现看.NETFramework特性对开发者的重要性
- net开发框架 ASP.NET开发宝典:.NET Framework介绍
- 职责链 浅谈.net 中的职责链模式的使用
- 正则表达式 中文 全方位探讨.NET Framework正则表达式
- 结构设计产品 在.NET中定义结构设计标准
- net开发框架有哪些 用.NET框架实现序列化
- 开发NET框架的公司 使用.NET框架类替代API调用的问题
- 结构体和结构类型的区别 C#.net中类与结构的区别[2]
爱学记

微信收款码
支付宝收款码