prototype模式随想

有时业务中客户不希望再次输入以前输过的数据。而通过new一个实例,然后用以前的数据一一赋值,显得有些麻烦。

class client

{

      //赋值操作

}

这些代码留在客户代码中会模糊了客户的职责,然而尽管可以使用Factory Method来解决。

class Factory

{

     public Class Create(Class o){//赋值操作;}

}

class client

{

     Factory.Create(Class o);

}

但是如果这些数据形成了一个类层次结构,不同的子类需要不同的赋值方式,就会需要不同子类的工厂,导致类的数量增多。尽管还有其他方面的原因,然而有些是跟语言支持有关。

 

在以前做过的一个项目中,客户希望用以前填过的单子,修改几处就可以,很容易就想到了prototype模式。但因为prototype模式而饱受困扰,到最后通过日志记录单子的整个处理过程才发现:

实现Clone操作需要考虑业务中每个数据怎么处理,也就是deep clone.处理不好,到后面出问题,还以为是中间什么地方出错了。

成功的经验值得总结,然而失败的经验更值得总结。

 

 

posted on   bmrxntfj  阅读(394)  评论(1编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
< 2008年8月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6

统计

点击右上角即可分享
微信分享提示