prototype模式随想
有时业务中客户不希望再次输入以前输过的数据。而通过new一个实例,然后用以前的数据一一赋值,显得有些麻烦。
class client
{
//赋值操作
}
这些代码留在客户代码中会模糊了客户的职责,然而尽管可以使用Factory Method来解决。
class Factory
{
public Class Create(Class o){//赋值操作;}
}
class client
{
Factory.Create(Class o);
}
但是如果这些数据形成了一个类层次结构,不同的子类需要不同的赋值方式,就会需要不同子类的工厂,导致类的数量增多。尽管还有其他方面的原因,然而有些是跟语言支持有关。
在以前做过的一个项目中,客户希望用以前填过的单子,修改几处就可以,很容易就想到了prototype模式。但因为prototype模式而饱受困扰,到最后通过日志记录单子的整个处理过程才发现:
实现Clone操作需要考虑业务中每个数据怎么处理,也就是deep clone.处理不好,到后面出问题,还以为是中间什么地方出错了。
成功的经验值得总结,然而失败的经验更值得总结。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 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】