Podzielenie zadania na klasy

0

Hej,

Treść tego co chciałbym zrobić:

Fundusz składa się z:
-ID
-Nazwy
-Rodzaju

3 Rodzaje funduszy
-Polski
-Zagraniczny
-Pieniężny

3 Profile investowania
-Bezpieczny - 20% Polskie, 75% Zagraniczne, 5% Pieniężne
-Zrównoważony - 30% Polskie, 60% Zagraniczne, 10% Pieniężne
-Agresywny - 40% Polskie, 20% Zagraniczne, 40% Pieniężne

Rozbiłem sobie na klasy:

public class Fund {

        private Long Id;
        private String Name;
        private FundType type;
public enum FundType {
        
        POLAND,
        FOREING,
        MONETARY;
        
}

public enum ProfileOfInvesting {

        SAFE(20, 75, 5),
        BALANCED(30, 60, 10),
        AGGRESSIVE(40, 20, 40);

        private final int poland;
        private final int foreing;
        private final int monetary;

        private ProfileOfInvesting(int poland, int foreing, int monetary) {
                this.poland = poland;
                this.foreing = foreing;
                this.monetary = monetary;
        }

        public int getPoland() {
                return poland;
        }

        public int getForeing() {
                return foreing;
        }

        public int getMonetary() {
                return monetary;
        }
}

Czy takie rozbicie jest prawidłowe, najbardziej zastanawiają mnie te profile inwestowania. Czy w prawidłowy sposób to zrobiłem ?
Jestem ciekawy co powiecie @jarekr000000 @Shalom @scibi92 @Koziołek

1

To zalezy co ty potem chcesz z tym robic. Bo jesli chcesz tam miec jakas specjalna logike dla roznych profili to zrobiles to zle i powinienes miec osobne klasy ProfilX, ProfilY zeby polimorficznie implementowac w nich logike.

0

Na wejściu chciałbym wrzucić jakąś kwotę.

Następnie logika by mi dzieliła tą kwotę dla wybranego profilu inwestowania.

1

Jeżeli chcesz mieć mechanizm, który automatycznie dzieli kwotę na poszczególne fundusze, to można zrobić, to jeszcze inaczej. Definiujesz sobie prosty builder:

public class InvestProfileBuilder{

	public InvestProfileBuilder polish(int per){}
	public InvestProfileBuilder foregin(int per){}
	public InvestProfileBuilder monetary(int per){}

	public InvestProfileBuilder value(long val){}

	// i na koniec 
	public InvestitionProfile build(){}

	// i teraz kilka predefiniowanych podziałów:

	public AggresiveInvestProfile aggresive(long val){}
	public BalancedInvestProfileBuilder balanced(long val){}	
	public SafeInvestProfileBuilder safe(long val){}	

}

XXXInvestitionProfile dziedziczą sobie z jakiegoś wspólnego korzenia.

0

Dzięki za pomysł!

0 użytkowników online, w tym zalogowanych: 0, gości: 0