图案原型

原型模式属于生成设计模式组。
假设我们正在开发约会应用程序 Tender,根据我们的商业模式,我们有一个付费机会来复制您自己的个人资料,自动更改姓名和照片的顺序。这样做是为了让用户有机会在应用程序中同时维护与不同朋友组的多个个人资料。
通过点击创建个人资料副本的按钮,我们需要实现复制个人资料、自动生成姓名以及重新排序照片。
朴素的伪代码实现:

fun didPressOnCopyProfileButton() {
    let profileCopy = new Profile()
    profileCopy.name = generateRandomName()
    profileCopy.age = profile.age
    profileCopy.photos = profile.photos.randomize()
    storage.save(profileCopy)
}

现在让我们想象一下其他团队成员复制粘贴了复制代码或从头开始想出它,然后添加了一个新字段–喜欢。该字段存储个人资料喜欢的数量,现在您需要通过添加新字段来手动更新*所有*发生复制的位置。代码的维护和测试非常耗时且困难。
为了解决这个问题,原型设计模式被发明了。让我们创建一个通用的复制协议,其中的 copy() 方法返回具有必要字段的对象的副本。更改实体字段后,您只需要更新一个 copy() 方法,而不需要手动搜索并更新所有包含复制代码的地方。

来源

https://refactoring.guru/ru/design-patterns/prototype

Leave a Comment

Your email address will not be published. Required fields are marked *