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

推荐订阅源

云风的 BLOG
云风的 BLOG
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
Recent Announcements
Recent Announcements
B
Blog
D
Docker
V
V2EX
GbyAI
GbyAI
L
LangChain Blog
博客园 - Franky
U
Unit 42
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
博客园_首页
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
量子位
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理,
为什么模型应该更具抽象概念,而不是被业务属性束缚
PM超进化 · 2024-12-04 · via 人人都是产品经理

在产品开发中,我们常常会忽略一个重要的原则:“模型应该更具抽象概念,不应该赋予业务属性。”简单的一句话,值得我们深思。本文作者分享了他对这句话的理解和思考,大家可以参考。

昨天在项目群里讨论问题时,有个同事提到一个观点让我印象深刻:“模型应该更具抽象概念,不应该赋予业务属性。”简单的一句话,却揭示了一个我们在开发中经常忽略的重要原则。

今天就来聊聊这句话背后的深意,以及它为什么值得我们在模型设计中深刻反思。

01 什么是模型的“抽象概念”?

在软件开发中,模型是现实世界在系统中的抽象表达。比如,“用户”这个模型在最抽象的层面上,可以定义为:

  • 用户名
  • 密码
  • 邮箱
  • 唯一标识(ID)

这些属性是用户的本质,而与具体的业务无关。与之相对的是业务属性,比如:

  • 用户下了多少订单。
  • 用户的会员等级。
  • 用户是否参与了某次活动。

这些是与业务相关的逻辑,不属于用户的本质。模型的抽象性,就是专注于本质属性,而不是具体业务场景中那些容易变动的部分。

02 为什么模型设计要“去业务化”?

在项目开发中,把模型设计得过于贴合具体的业务场景,很容易埋下隐患。以下是几个关键原因:

1. 降低系统耦合,保持灵活性

业务逻辑是动态的、经常变化的。如果模型被绑定到具体业务属性上,那么每次业务调整时,模型都可能需要修改,导致系统的其他部分被连带影响。

举个例子:

如果“用户模型”包含“订单数量”字段,那么订单系统的改动会直接影响用户模型,甚至需要改动数据库结构。

这样的耦合让系统变得非常脆弱。而抽象模型通过专注本质,减少了这种相互牵绊的风险。

2. 提高模型复用性

一个好的抽象模型,可以在不同的业务场景中被复用。比如,一个抽象的“用户”模型,可以应用于:

  • 电商系统:用于下单和订单管理。
  • 社交平台:用于关系网络和用户动态。
  • 企业内部系统:用于人力资源管理。

如果模型里包含了业务属性,比如“购物车内容”或“朋友圈动态”,那么它就很难跨越场景复用,导致代码和逻辑的重复。

3. 支持业务演进

在一个快速变化的业务环境中,需求的变化往往比我们预期得更频繁。如果模型绑定了过多的业务属性,每次需求调整都会牵一发而动全身。

相比之下,抽象模型更像是一块稳定的基石,业务逻辑可以围绕它自由演变,而不会对核心结构造成过多干扰。

03 如何在实践中实现抽象模型设计?

知道了抽象模型的优势,那该如何在实际开发中实现呢?以下是一些可操作的设计方法:

1. 专注对象的本质

设计模型时,尽量只保留那些反映对象本质的属性。例如:

用户模型只包含“用户名”、“邮箱”等基本信息,而不是“是否参与某活动”这样的业务字段。

这样的设计可以保证模型的稳定性,避免被业务需求牵着走。

2. 业务逻辑外移

将复杂的业务逻辑从模型中移到服务层或领域对象中。比如:

“用户的订单统计”应该由订单服务来负责,而不是直接嵌入用户模型。

通过分层设计,我们可以将模型和业务逻辑解耦,确保模型的纯净。

3. 使用组合代替继承

当需要扩展模型功能时,优先使用组合,而不是直接在模型中添加字段。例如:

用一个单独的“会员信息”模块,来扩展用户的会员功能,而不是直接在用户模型中添加“会员等级”。

4. 借助接口与领域驱动设计

通过定义接口或领域对象,避免模型设计受限于具体实现。例如:

class User:

def __init__(self, user_id, username):

self.user_id = user_id

self.username = username

class MembershipDetails:

def __init__(self, level, expiry_date):

self.level = level

self.expiry_date = expiry_date

这样可以灵活地扩展用户模型的功能,而不会破坏其核心结构。

04 典型误区与应对策略

尽管“模型抽象化”的理念很好,但在实践中我们可能会遇到以下问题:

1. 过度抽象

如果抽象过度,模型可能变得过于笼统,反而无法满足实际需求。例如,将所有业务都抽象为“实体”或“资源”,最后反而失去了模型的意义。

应对策略: 抽象时,关注对象的本质属性,适度平衡抽象与现实需求。

2. 忽略业务的特殊性

有时,开发者为了保持模型的抽象性,完全忽略了业务需求的复杂性,导致实现过程反而更加繁琐。

应对策略: 结合领域驱动设计(DDD),通过分层架构,让模型抽象与业务逻辑合理分工。

05 抽象模型是稳定的,业务逻辑是可变的

正如那位同事说的,模型设计应该专注于抽象概念,而不是被业务属性束缚。这是一个技术原则,也是一种长远的系统设计哲学。抽象模型就像稳定的地基,支持着不断变化的业务需求。

在未来的开发中,不妨多花一些时间,思考你的模型是否过于依赖业务属性?是否可以更抽象、更独立?相信这些思考会让你的系统更稳健,更灵活。

模型是稳定的,业务是灵活的。把握这两者的界限,是一个开发者真正成熟的标志。

本文由 @好帅的舅舅 原创发布于人人都是产品经理,未经授权,禁止转载

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。