2011-01-29 84 views
2

我正在設計一個使用JSF + EJBS + JPA等的JAVA EE 6來總結。徽章實現問題

您可以創建一篇文章,並且如果它符合某些條件(例如1000個視圖),則會獲得「1000個視圖」徽章。

當我想動態創建新徽章時出現問題。我有一個徽章實體類,並且所有徽章都是從數據庫中提取的。我如何動態地爲徽章頒發條款,因爲行爲取決於每個實例而不是其類型?

例如,用於評估「1000次視圖」徽章的會議要求的業務邏輯與「每週最佳評級文章」中使用的邏輯大不相同。此外,如果徽章數量增加會怎樣?

我不能只是擴展一個類,因爲它沒有任何意義,所以我覺得我沒有看這個正確的方法。

有關如何實現它的任何想法?

回答

2

執行一個@Singleton,它有一個方法在一段時間內運行一次(每小時一次或每24小時一次)。它將有一個類的集合來檢查帖子的一些條件。如果你想要一個新的徽章,只需添加一個班級。

@Singleton 
public class Watchdog implements Serializable { 
    /** The Constant serialVersionUID. */ 
    private static final long serialVersionUID = 1L; 

    /** The em. */ 
    @PersistenceContext 
    private EntityManager em; 

    private List<PostChecker> checkers = new ArrayList<PostChecker>(); 

    @PostConstruct 
    public void init() { 
     checkers.add(new ThousandViewChecker()); 
     checkers.add(new PopularPostChecker()); 
     .... 


    } 

    @Schedule(...) 
    public void monitor() { 
     for (PostChecker checker : checkers) { 
      checker.check(em); 
     }   
    } 

} 

如果你不想每次添加一個類,創建徽章授予的規則有些XML文件,並創建一個工廠的棋子,這將使用這些XML文件構建自己的徽章規則。然後添加一個徽章,你只需要添加一個XML。

+0

+1只是因爲代碼導致「檢查em」。 – bjrnt 2011-01-29 09:45:22