簡體   English   中英

從具有相同成員的兩個不同對象中進行條件選擇

[英]Conditional selection from two different objects with same members

我想做的是用一些代碼更好地解釋:

在這里,我有兩個類(更確切地說是數據集中的DataTables,但我更願意將其描述為類符號):

    class A {
       public aType varA;
       public bType varB;
       public cType varC;
    }

    class B {
       public aType varA;
       public bType varB;
       public cType varC;
       public dType varD;
    }

這些表由一個名為varSelect的變量定義:

    A varnameA = (varSelect == 1) ? ABuilder() : null;
    B varnameB = (varSelect == 2) ? BBuilder() : null;

在代碼中,我必須使用類似以下內容的代碼:

   if((varSelect == 1 && varnameA.varA == true) || 
      (varSelect == 2 && varnameB.varA == true)
   { 
       ... 
   }

如您所見,它執行相同的操作,但是它們具有一些不同的屬性,但是我將主要使用相同的類成員進行檢查。 我該如何設計這樣的東西?

注意:認為B是A類的較新版本。但是某些代碼將不得不繼續使用A作為其數據源。

封裝和繼承可以幫助解決此問題。

class Data {
    // Common properties
    public aType varA;
    public bType varB;
    public cType varC;
}

class A extends Data {
    // other properties
}

class B extends Data {
    public dType varD;
    // other properties
}

class DataTable {
    Data data;
    public DataTable(int selector) {
        if (selector == 1) {
            // data will contain table A
        } else if (selector == 2) {
            // data will contain table B
        }
    }

    public boolean isVarA() {
        return data.varA;
    }
}

因此,當我們需要檢查varA時,我們不再需要記住選擇了哪個數據表。

DataTable dataTable = new DataTable(1); // varSelect = 1
//...
//...
//...
if (dataTable.isVarA() == true) {
    // do something
}

暫無
暫無

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

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