Skocz do zawartości
  • 0

Takie jedno pytanie


kerpson

Pytanie

Ostatnio tu pusto więc chce się o coś spytać

 

Robię metodę niestatyczną dla klasy MySQL i wygląda tak: (przykład)

public void createUser(....){

teoretycznie jest więcej voidów, ale mniejsza. W  klasie głównej robię:

private MySQL mysql;

@Override
public void onEnable(){
	this.mysql = new MySQL();
}

public MySQL getSql(){
	return this.mysql;
}

No a w innej klasie

private final MySQL mysql;

public Klasa(Main plugin){
	this.mysql = plugin.getSql();
}

No i główne pytanie: Czy jest różnica, jeżeli w klasie MySQL dopiszę:

Main plugin;

public MySQL(Main plugin){
	this.plugin = plugin;
}

a w klasie głównej dodam tylko new MySQL(this);

 

Klasa sql nie będzie potrzebować "plugin", więc go nie dałem, bo jest niepotrzebny.

Czy to błąd? Czy klasa sql powinna mieć to odwołanie jakie powyżej ?

Odnośnik do komentarza
https://skript.pl/temat/35317-takie-jedno-pytanie/
Udostępnij na innych stronach

7 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
Cytat

Robię metodę niestatyczną dla klasy MySQL i wygląda tak: (przykład)


public void createUser(....){

a ja tak tylko chcialem powiedziec ze mzesz zrobic to ladniej i lepiej, zamiast ladowanie wszystkiego w jednej klasie mysql podziel to na kilka czesci, np.

  • mysql ma tylko getConnection throws exception; (i proponowałbym np. interfejs SQLDatabase + implementacja MySQLDatabase (uzywaj hikari))
  • interfejs DataInitializer<ID, OBJ> (+ implementacje, np. public class UserDataInitializer implements DataInitializer<UUID, User>, tak samo z gildią itp - w tym interfejscie np. metoda loadAll, saveAll, lub load(ID id), save(OBJ object) no i oczywiscie te wszystkie metody maja przekazywac sqlexception dalej - dopiero w tasku masz sprawdzac czy zapisanie/zaladowanie nie poszlo i wtedy cos z tym robic)
  • w jakiejs klasie trzymasz wszystkie te DataInitializery i robisz jakiegos taska ktory te wszystkie datainitializery zbiera i wykonuje np. save dla wszystkich obiektow (ja w natalciaguilds u mnie na githubie mialem zamiar to zrobic ale podszedlem bez pomyslu i pozniej to zmienialem tysiac razy az w koncu wyglada jak syf i jest niedokonczone, anyway - robie tak w kazdym innym pluginie ktory trzyma wiecej obiektow do zapisania do bazy danych)

 

A tak to wgl nie rozumiem całego tematu i nie wiem o co chodzi xD jakos dziwnie to napisales i nie moge zrozumiec ocb

Edytowane przez yooniks
Odnośnik do komentarza
https://skript.pl/temat/35317-takie-jedno-pytanie/#findComment-226853
Udostępnij na innych stronach

  • 0
32 minuty temu, yooniks napisał:

a ja tak tylko chcialem powiedziec ze mzesz zrobic to ladniej i lepiej, zamiast ladowanie wszystkiego w jednej klasie mysql podziel to na kilka czesci, np.

  • mysql ma tylko getConnection throws exception; (i proponowałbym np. interfejs SQLDatabase + implementacja MySQLDatabase (uzywaj hikari))
  • interfejs DataInitializer<ID, OBJ> (+ implementacje, np. public class UserDataInitializer implements DataInitializer<UUID, User>, tak samo z gildią itp - w tym interfejscie np. metoda loadAll, saveAll, lub load(ID id), save(OBJ object) no i oczywiscie te wszystkie metody maja przekazywac sqlexception dalej - dopiero w tasku masz sprawdzac czy zapisanie/zaladowanie nie poszlo i wtedy cos z tym robic)
  • w jakiejs klasie trzymasz wszystkie te DataInitializery i robisz jakiegos taska ktory te wszystkie datainitializery zbiera i wykonuje np. save dla wszystkich obiektow (ja w natalciaguilds u mnie na githubie mialem zamiar to zrobic ale podszedlem bez pomyslu i pozniej to zmienialem tysiac razy az w koncu wyglada jak syf i jest niedokonczone, anyway - robie tak w kazdym innym pluginie ktory trzyma wiecej obiektow do zapisania do bazy danych)

 

A tak to wgl nie rozumiem całego tematu i nie wiem o co chodzi xD jakos dziwnie to napisales i nie moge zrozumiec ocb

Dzięki za radę. Sam myślałem jak to napisać długo xd

Odnośnik do komentarza
https://skript.pl/temat/35317-takie-jedno-pytanie/#findComment-226854
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...