master
3009594 2024-09-24 20:24:13 +02:00
parent 76d38e0048
commit 8590315d29
2 changed files with 82 additions and 0 deletions

View File

@ -0,0 +1,82 @@
package DesignPatterns.strukturellen_Entwurfsmustern.Proxy_Pattern;
//Schritt 1: Definiere das gemeinsame Interface (Subject)
interface Bankkonto {
void einzahlen(double betrag);
void abheben(double betrag);
}
//Schritt 2: Erstelle das echte Bankkonto (RealSubject)
class EchtesBankkonto implements Bankkonto {
private double saldo;
@Override
public void einzahlen(double betrag) {
saldo += betrag;
System.out.println(betrag + " € eingezahlt. Neuer Kontostand: " + saldo + " €.");
}
@Override
public void abheben(double betrag) {
if (saldo >= betrag) {
saldo -= betrag;
System.out.println(betrag + " € abgehoben. Neuer Kontostand: " + saldo + " €.");
} else {
System.out.println("Nicht genügend Guthaben.");
}
}
}
//Schritt 3: Erstelle den Proxy
public class BankkontoProxy implements Bankkonto {
private EchtesBankkonto echtesBankkonto;
private String zugangscode;
public BankkontoProxy(String zugangscode) {
this.echtesBankkonto = new EchtesBankkonto(); // Echtes Konto
this.zugangscode = zugangscode; // Zugriffskontrolle
}
private boolean autorisieren(String eingegebenerCode) {
return zugangscode.equals(eingegebenerCode); // Vergleich des Sicherheitscodes
}
@Override
public void einzahlen(double betrag) {
// Sicherheitsprüfung, bevor Zugriff gewährt wird
System.out.println("Sicherheitsüberprüfung...");
if (autorisieren("1234")) { // Beispiel: Der Code ist "1234"
echtesBankkonto.einzahlen(betrag);
} else {
System.out.println("Zugriff verweigert: Ungültiger Code.");
}
}
@Override
public void abheben(double betrag) {
System.out.println("Sicherheitsüberprüfung...");
if (autorisieren("1234")) {
echtesBankkonto.abheben(betrag);
} else {
System.out.println("Zugriff verweigert: Ungültiger Code.");
}
}
public static void main(String[] args) {
// Erstelle einen Proxy mit einem Zugangscode
Bankkonto bankkonto = new BankkontoProxy("1234");
// Führe eine Transaktion durch
bankkonto.einzahlen(100); // Sicherheitsüberprüfung -> Geld wird eingezahlt
bankkonto.abheben(50); // Sicherheitsüberprüfung -> Geld wird abgehoben
// Versuch, ohne richtigen Code auf das Konto zuzugreifen
Bankkonto falscherZugang = new BankkontoProxy("5678");
falscherZugang.abheben(10); // Sicherheitsüberprüfung -> Zugriff verweigert
}
}