簡體   English   中英

如何實施策略設計模式?

[英]How to implement the Strategy design pattern?

我正在研究推薦系統。 這將是一個Android應用程序,其中用戶將輸入他們的首選項,並根據這些首選項向該用戶顯示其他匹配的配置文件。 我正在從用戶那里獲取數據並將其存儲在Firebase中。

這些是數值,為了向用戶顯示匹配的配置文件,我使用兩種算法來計算用戶之間的相似度計數: Cosine similarityPearson correlation

我正在從應用程序中獲取算法的名稱,然后執行算法以向用戶顯示類似的配置文件。

if (request.query.algo === "cosine") {
  // compute cosine value
} 
else if (request.query.algo === "pearson-correlation") {
  // compute pearson correlation coefficents

}

由於這將是一個實時應用程序,因此該方法是完全錯誤的,我想實現策略設計模式,該算法可以在運行時而不是編譯時決定算法。

所以現在的問題是,在策略設計模式中,我將如何決定何時使用哪種算法?

例如,當您用信用卡購買東西時,信用卡的類型無關緊要。 所有信用卡均具有磁條,磁條中已編碼信息。 這些條及其包含的內容代表“接口”,卡的類型為“實現”。 每張信用卡都可以被其他任何一張替換,並且彼此完全獨立。

同樣,我應該基於策略設計模式在運行時在Cosine和Pearson之間選擇什么依據?

根據我的理解,在兩個用戶配置文件具有非常不同的項目集(在這種情況下為首選項)的情況下,Pearson的表現會更差。

也許這可能是您的標准? 如果匹配首選項的數量大於某個閾值,則使用Pearson;對於其他情況,請使用余弦。

您也許可以向您的用戶顯示CLOSE匹配列表,該列表使用余弦來向用戶顯示其個人資料有很多共同之處。

然后,您可能會顯示第二個列表,表示您可能也有興趣,該列表使用Pearson來顯示沒有很多共同偏好的匹配配置文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM