2016-11-12 88 views
-3

我需要幫助。我在互聯網上搜索如何調用我的代碼的設計模式,但我還沒有找到它。 我有一個類(f.e.練習)與getter和setter和經理都有鍛鍊(在數據庫或數組中,無所謂)。在我的申請中,我有一個鍛鍊經理的實例,並且通過它進行鍛鍊。這是怎樣的設計模式?

練習:

public class Exercise { 
    private Long id; 
    private String name; 

    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public Long getId() { 
     return id; 
    } 
    public void setId(Long id) { 
     this.id = id; 
    } 
} 

練習經理:

public interface ExerciseManager{ 
    void createExercise(Exercise exercise); 

    Exercise getExerciseById(Long id); 

    Collection<Exercise> getAllExercises(); 

    Exercise getExerciseByName(String name); 

    void updateExercise(Exercise exercise); 

    void deleteExercise(Long id); 

    Boolean isIdInDB(Long id); 
} 

public class ExerciseManagerImpl implements ExerciseManager{ 
    ... 
} 

主要(遠東):

public static void main(String[] args) { 
    DataSource dataSource = <some datasource>; 
    ExerciseManager exerciseManager = new ExerciseManagerImpl(dataSource); 
    Exercise newExercise = new Exercise(); 
    newExercise.setName("Name1"); 
    exerciseManager.createExercise(newExercise); 
    Exercise existExercise = exerciseManager.getExerciseByName("Name1"); 
    exerciseManager.deleteExercise(existExercise.getId()); 
} 
+5

什麼讓你覺得這是一個命名的設計模式? –

+1

另外,另一個無關的問題是,爲什麼'getExerciseById'返回一個'Dragon'而不是'Exercise'? –

+0

我不知道,我在更多的代碼中看到了類似的結構,所以我認爲存在用於描述這種結構的任何設計模式。 對不起,我忘了改一個班的名字,當然鍛鍊是正確的。 (我已經編輯過我的帖子。) –

回答

0

這看起來像一個data access object,這將是您的持久層的一部分;它用作應用程序代碼(使用Exercise實例)和持久性機制(例如EXERCISES數據庫表)之間的接口,將前者與後者解耦。

-1

有一些是參與:

  • 工廠:只允許一個類創建某種類型的對象。
  • 單例:只有一個實例存在一個類型。調解員:致力於操作和管理某種類型的調解人。

但是我想,你要找的是什麼ORM,讓我們來看看維基百科說:

對象關係映射(ORM,O/RM和O/R映射工具)in 計算機科學是一種編程技術,用於在面向對象編程 語言的不兼容類型系統之間轉換數據 。實際上,這創建了一個「虛擬對象數據庫」,可以在編程語言中使用該虛擬對象數據庫。

https://en.wikipedia.org/wiki/Object-relational_mapping