如何模塊化設(shè)計(jì)B端系統(tǒng)?先思考這3個(gè)問題

5 評(píng)論 9309 瀏覽 85 收藏 12 分鐘

產(chǎn)品經(jīng)理都希望能做出一個(gè)可復(fù)用性強(qiáng)、靈活性好的B端系統(tǒng)出來。那么,模塊化設(shè)計(jì)就是其中一個(gè)很好的方法。

一、為什么要模塊化設(shè)計(jì)?

希望減少重復(fù)性造輪子的可能,抽離出共通性、形成標(biāo)準(zhǔn)化,最終達(dá)到減少人力物力的大量浪費(fèi),提高業(yè)績的同時(shí)還減少了成本開支,何樂而不為?

最近鼓吹得如日中天的中臺(tái)概念、流行了許久的敏捷開發(fā),無不都是為了此目的。

當(dāng)前較為普遍的兩種方法:接口式開發(fā)、模塊化設(shè)計(jì)。

1. 接口式開發(fā):開發(fā)角度

寫代碼的同學(xué)都知道,代碼要講究可復(fù)用性、靈活性。前端開發(fā)與后端開發(fā),采用接口式方法來進(jìn)行信息之間的交互。

案例:我要登錄淘寶網(wǎng)站。

上下游系統(tǒng)之間,跨系統(tǒng)之間,也大多采用接口式方法進(jìn)行信息傳遞。

此文,咱們簡單聊聊B端系統(tǒng)模塊化設(shè)計(jì)的好處。

2. 模塊化設(shè)計(jì):產(chǎn)品設(shè)計(jì)角度

模塊化設(shè)計(jì),專業(yè)術(shù)語講是為了我們做的產(chǎn)品,將來靈活性強(qiáng)、擴(kuò)展性好。不需要開發(fā)修改代碼,就可以實(shí)現(xiàn)部分新的業(yè)務(wù)邏輯。

通俗點(diǎn)講,就是堆積木。我們可以將任意小方塊,任意拼湊成我們想要的形狀,從而達(dá)到目的。

不同的系統(tǒng),不同的業(yè)務(wù),要根據(jù)實(shí)際情況分析,這里我以電商系統(tǒng)為例,總結(jié)了些許模塊化設(shè)計(jì)經(jīng)驗(yàn),分享一二。不到之處,還請(qǐng)大佬們批評(píng)指正。

二、適不適合模塊化設(shè)計(jì)?

1. 搞清楚事務(wù)本質(zhì)

首先,一定要搞清楚為什么要去模塊化設(shè)計(jì),千萬不要為了模塊化而模塊化,這個(gè)是很大的忌諱。模塊化設(shè)計(jì),很多時(shí)候短期是看不到任何效果的,而且讓系統(tǒng)變得更麻煩。

以添加商品為例:要新建一個(gè)商品,必不可少的有商品基本信息、商品類目、商品屬性信息等等。

如果想簡單點(diǎn)設(shè)計(jì):

  1. 點(diǎn)擊添加商品按鈕,進(jìn)入添加商品頁面;
  2. 在固定表單中,填寫商品所有信息;
  3. 點(diǎn)擊保存按鈕。

添加商品,本就不是很復(fù)雜的事,此簡單的方案不是不可行。只是不利于系統(tǒng)的可擴(kuò)展性和靈活性。

為什么?在固定的表單中填寫商品所有信息,你就能保證所有的商品都是一樣的業(yè)務(wù)邏輯,一樣的商品信息嗎?根本保證不了,那么一旦做成固定模板,系統(tǒng)后期就要不斷的根據(jù)新的業(yè)務(wù)邏輯和商品去不斷的改代碼來實(shí)現(xiàn)業(yè)務(wù)方的需求。

那么,有沒有更好的方案?模塊化設(shè)計(jì)。

回到問題本質(zhì):想成功添加一個(gè)商品到商品庫。

方案:將商品信息打散,將其拆分為三大類信息組合:商品共性信息(所有的商品都有的屬性)、商品類目、動(dòng)態(tài)屬性(區(qū)分商品唯一性的屬性)。

2. 理清父子關(guān)聯(lián)關(guān)系

既然要模塊化,那么肯定就會(huì)出現(xiàn)一層又一層的父子關(guān)聯(lián)關(guān)系。

說明:要想成功添加A商品,必須關(guān)聯(lián)某個(gè)A商品類目。A商品類目必須關(guān)聯(lián)某個(gè)A模板,A模板必須關(guān)聯(lián)對(duì)應(yīng)屬性。

屬性管理:管理了商品的所有類別的屬性信息,一定要做好分類。比如:關(guān)鍵屬性、規(guī)格屬性、非關(guān)鍵屬性等等。

模板管理:不同的商品,可能由不同的屬性構(gòu)成。那么我將屬性形成一個(gè)又一個(gè)模板,就可以靈活的去滿足各種類別的商品。

商品類目:商品的分類管理。所有的商品,肯定有自己的分類,也就是商品類目。同一類商品歸為一類,便于商品的維護(hù)和管理。

商品管理:所有商品的管理?,F(xiàn)在要添加一個(gè)商品,通過模板化設(shè)計(jì),就變得非常靈活。要想添加商品:

  1. 點(diǎn)擊添加按鈕;
  2. 選擇A商品類目;
  3. 填寫A類目關(guān)聯(lián)的模板A中對(duì)應(yīng)的屬性信息;
  4. 保存。

模板設(shè)計(jì)的好處就是,我可以隨時(shí)更換關(guān)聯(lián)關(guān)系,也可以隨時(shí)在下一層關(guān)聯(lián)關(guān)系中做任何CRUD操作卻不影響當(dāng)前層級(jí)新的數(shù)據(jù)。

三、如何模塊化設(shè)計(jì)B端系統(tǒng)?

記住我一句萬變不離其宗的話:

所有的系統(tǒng)設(shè)計(jì)無非就是對(duì)數(shù)據(jù)庫中各種表格的CRUD(增刪改查)。

別把后臺(tái)系統(tǒng)設(shè)計(jì)想的那么玄乎,沒有那么復(fù)雜。咱之所以覺得復(fù)雜,是因?yàn)樵圻€不夠熟悉業(yè)務(wù),不清楚正向逆向各種流程,并不是系統(tǒng)設(shè)計(jì)難。

1. 功能結(jié)構(gòu)圖:有哪些功能、頁面、按鈕

說明:

  1. 下圖是我認(rèn)真畫的真實(shí)數(shù)據(jù),認(rèn)真觀察后發(fā)現(xiàn)沒有?哪個(gè)版塊的管理離開的了CRUD?先講頁面的根(CRUD)想好,什么批量克隆、啟用、停用無非添磚加瓦而已;
  2. 功能結(jié)構(gòu)圖也就是功能列表,只是功能列表會(huì)描述的更細(xì),而結(jié)構(gòu)圖只是列出大的框架,方便參閱,沒你想象的那么復(fù)雜;
  3. 雖不復(fù)雜,但每一層的關(guān)聯(lián)關(guān)系可別忘記加上,這可是咱這篇模塊化設(shè)計(jì)的核心。

2. 信息結(jié)構(gòu)圖:有哪些對(duì)象和字段

信息結(jié)構(gòu)圖:將你看到的頁面信息,抽象處理到一個(gè)對(duì)象的維度,然后把同一個(gè)對(duì)象的信息放在一起。

咱們產(chǎn)品人畫的信息結(jié)構(gòu)圖,不需要與開發(fā)同學(xué)設(shè)計(jì)的數(shù)據(jù)庫表結(jié)構(gòu)一模一樣,按你的理解將其以單個(gè)對(duì)象維度抽離出來即可。

有沒有覺得設(shè)計(jì)信息結(jié)構(gòu)圖很難,根本無從下手,不知所措?根本原因在哪?在于咱們腦海中沒有面向?qū)ο蟮母拍詈蛯?duì)數(shù)據(jù)庫表結(jié)構(gòu)的理解。

什么叫對(duì)象?萬事萬物,皆為對(duì)象。你,我,鼠標(biāo),鍵盤,電腦都是對(duì)象。

對(duì)象:指具體的某一個(gè)事物,即在現(xiàn)實(shí)生活中能夠看得見摸得著的事物。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,對(duì)象所指的是計(jì)算機(jī)系統(tǒng)中的某一個(gè)成分。

在面向?qū)ο蟪绦蛟O(shè)計(jì)中,對(duì)象包含兩個(gè)含義,其中一個(gè)是數(shù)據(jù),另外一個(gè)是動(dòng)作。對(duì)象則是數(shù)據(jù)和動(dòng)作的結(jié)合體。對(duì)象不僅能夠進(jìn)行操作,同時(shí)還能夠及時(shí)記錄下操作結(jié)果。方法是指對(duì)象能夠進(jìn)行的操作,方法同時(shí)還有另外一個(gè)名稱,叫做函數(shù)。方法是類中的定義函數(shù),其具體的作用就是對(duì)對(duì)象進(jìn)行描述操作。

對(duì)象解析:對(duì)象由屬性和方法構(gòu)成。private開頭的全是對(duì)象應(yīng)有的屬性,也就是咱們看到的信息架構(gòu)圖中,員工對(duì)應(yīng)的信息。至于方法,咱們產(chǎn)品經(jīng)理不需要關(guān)注,知道有就好。

表結(jié)構(gòu):表名+字段。詳情可以看我另一篇文章的文末,這里不再說了哈!《后臺(tái)系統(tǒng)架構(gòu)設(shè)計(jì)-商務(wù)咨詢系統(tǒng)

表解析:員工信息表用來儲(chǔ)存員工的基本信息。一般由表明+字段構(gòu)成,我們產(chǎn)品人不需要去關(guān)注數(shù)據(jù)類型,是否主鍵這些信息。

3. 原型圖:系統(tǒng)長什么樣,有哪些規(guī)則和交互效果

PS:原型只是案例展示,并不是真實(shí)功能,有很多按鈕和規(guī)則,都沒有寫入,僅供參考。

如果你真的涉及想用模塊化設(shè)計(jì),需要找人交流的時(shí)候,記得找我喲!

屬性管理:

說明:屬性分類與屬性分組是不同概念。屬性分組是將一類屬性進(jìn)行分組,是站在業(yè)務(wù)維度劃分。屬性分類,是站在產(chǎn)品設(shè)計(jì)維度分析。

模板管理:

  1. 模板有點(diǎn)類似屬性分組,將一組又一組屬性構(gòu)建成一個(gè)又一個(gè)模板。
  2. 模板一定要關(guān)聯(lián)屬性,否則毫無意義。

商品類目:

  1. 商品類目,一定要去關(guān)聯(lián)設(shè)置好的不同業(yè)務(wù)的模板;
  2. 一個(gè)商品類目可以關(guān)聯(lián)多個(gè)模板。

商品管理:

  1. 添加商品,也就變得簡單方便。直接選擇商品類目后,填寫當(dāng)前業(yè)務(wù)的商品模板中的屬性信息即可;
  2. 如果業(yè)務(wù)有變動(dòng),商品屬性的增刪改查變得游刃有余,不會(huì)影響舊的在售商品。隨時(shí)更換隨時(shí)增加新的判斷,都可以,想怎么玩就怎么玩兒。

總結(jié)

所有的系統(tǒng)設(shè)計(jì)無非就是對(duì)數(shù)據(jù)庫中各種表格的CRUD(增刪改查)。

 

作者:會(huì)飛的豬,微信公眾號(hào):刻意練習(xí)產(chǎn)品思維(ID:kylxpm520)

本文由 @會(huì)飛的豬 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Unsplash, 基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 嗯,有點(diǎn)開發(fā)中的模塊,領(lǐng)域的意思,看的很爽!點(diǎn)贊了!

    回復(fù)
    1. 謝謝

      來自廣東 回復(fù)
  2. 這種屬性的意思是在數(shù)據(jù)庫中是一串字符串嗎

    來自浙江 回復(fù)
    1. 屬性的格式,請(qǐng)看數(shù)據(jù)類型

      來自廣東 回復(fù)
  3. 關(guān)注本公眾號(hào): kylxpm520,輸入【模塊】即可獲得本文中所有文件內(nèi)容。

    來自廣東 回復(fù)