diff --git a/Programmierung2/src/DesignPatterns/strukturellen_Entwurfsmustern/Proxy_Pattern/BankkontoProxy.java b/Programmierung2/src/DesignPatterns/strukturellen_Entwurfsmustern/Proxy_Pattern/BankkontoProxy.java new file mode 100644 index 0000000..24c9d17 --- /dev/null +++ b/Programmierung2/src/DesignPatterns/strukturellen_Entwurfsmustern/Proxy_Pattern/BankkontoProxy.java @@ -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 + + } +} diff --git a/Programmierung2/src/DesignPatterns/strukturellen_Entwurfsmustern/Proxy_Pattern/Proxy-Pattern.pdf b/Programmierung2/src/DesignPatterns/strukturellen_Entwurfsmustern/Proxy_Pattern/Proxy-Pattern.pdf new file mode 100644 index 0000000..22b8193 Binary files /dev/null and b/Programmierung2/src/DesignPatterns/strukturellen_Entwurfsmustern/Proxy_Pattern/Proxy-Pattern.pdf differ