惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
Last Week in AI
Last Week in AI
S
SegmentFault 最新的问题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
人人都是产品经理
人人都是产品经理
WordPress大学
WordPress大学
The Cloudflare Blog
IT之家
IT之家
雷峰网
雷峰网
小众软件
小众软件
博客园 - 叶小钗
博客园 - 聂微东
爱范儿
爱范儿
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
博客园 - 【当耐特】
V
V2EX
博客园_首页
T
Tailwind CSS Blog

博客园 - bmrxntfj

通过match看rust 聊一聊Rust的enum 折旧记录某旅纵横app分析研究 实现自己的js框架 实现自己的Linq to Sql 统一的仓储接口 ddd官方终于发布了一个完整的示例 浅谈值对象 分层随想 ddd心得 ddd分层感想 小boss随想 论软件的价值 Composite模式随想 DDD书籍介绍 Bmrxntfj.UIMapper界面对象映射 闲来没事,写个老玩意 Strategy与Template Method 规格模式(Specification)
prototype模式随想
bmrxntfj · 2008-08-01 · via 博客园 - bmrxntfj

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

class client

{

      //赋值操作

}

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

class Factory

{

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

}

class client

{

     Factory.Create(Class o);

}

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

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

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

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