Piszę aplikację na Androida, w której mam mnóstwo zmiennych, do których potrzebuję uzyskać dostęp w konkretnym działaniu (w zasadzie "model danych" dla małego rodzaju gry). Obecnie przechowuję je wszystkie w jednej ogromnej "kontenerowej" klasie, dzięki czemu mogę z łatwością odnieść się do nich bez zanieczyszczania mojej klasy aktywności. Przykład:Czy istnieje coś podobnego do systemu zasobów Androida na mniejszą skalę?
public class Model
{
private int a;
private String b;
private float c;
...
public int getA()
{
return a;
}
public void setA(int a)
{
this.a = a;
}
public String getB()
{
return b;
}
public void setB(String b)
{
this.b = b;
}
public float getC()
{
return c;
}
public void setC(float c)
{
this.c = c;
}
...
}
Jak widać, są one różnych typów, a wszystkie mają funkcje pobierające i ustawiające. Ale jest to uciążliwe przechowywanie ich w ten sposób. Chciałbym również powtórzyć grupy zmiennych, ale z tym płaskim formatem gettera/settera nie mogę tego zrobić.
Jestem świadomy systemu zasobów Androida, ale nie wydaje mi się to odpowiednie, ponieważ zmienne nie mają być przeznaczone dla całej aplikacji/globalne. Istnieją one tylko dla życia tej konkretnej aktywności i są programowo generowane za każdym razem, gdy zaczyna się działanie.
Zastanawiałem się nad umieszczeniem ich wszystkich w strukturze Map<String, Object>
, gdzie mógłbym odwoływać się do każdej zmiennej za pomocą klucza String. To usunie potrzebę posiadania klasy kontenera z mnóstwem modułów pobierających i ustawiających, ponieważ mogę po prostu wywołać put
lub get
na mapie. Ale za każdym razem, gdy chciałbym uzyskać wartość z mapy, musiałbym rzutować na oczekiwany typ. Nie podoba mi się to brzmienie.
Ktoś ma lepsze rozwiązanie? Czy istnieje coś podobnego do systemu zasobów Androida, które może być używane w mniejszej, bardziej tymczasowej skali?
Jeśli się klasę i zmiennych statycznych można uzyskać dostęp do zmiennych wszędzie. Nie jestem pewien, czy o to ci chodzi. – Tooroop