Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions _1_basics/src/main/java/code/_3_in_class/Salut.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package code._3_in_class;

public class Salut {
public static void main(String[] args) {
System.out.println("Hello world" +
"");
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package clean.code.design_patterns.requirements.observer;

// Usage example
public class Main {
public static void main(String[] args) {
// Create subject
StockMarket stockMarket = new StockMarket();

// Create observers
Observer client1 = new StockClient("Client 1");
Observer client2 = new StockClient("Client 2");
Observer client3 = new StockClient("Client 3");

// Register observers
stockMarket.registerObserver(client1);
stockMarket.registerObserver(client2);
stockMarket.registerObserver(client3);

// Set stock data, which will notify the observers
stockMarket.setStockData("ABC", 100.0);
stockMarket.setStockData("XYZ", 150.0);

// Unregister observer
stockMarket.unregisterObserver(client2);

// Set stock data again, only client1 and client3 will be notified
stockMarket.setStockData("DEF", 200.0);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package clean.code.design_patterns.requirements.observer;
// Observer interface
interface Observer {
void update(String stockName, double price);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package clean.code.design_patterns.requirements.observer;
// Concrete observer class
class StockClient implements Observer {
private String name;

public StockClient(String name) {
this.name = name;
}

@Override
public void update(String stockName, double price) {
System.out.println(name + " received an update for " + stockName + ": $" + price);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package clean.code.design_patterns.requirements.observer;

import java.util.ArrayList;
import java.util.List;

// Concrete subject class
class StockMarket implements Subject {
private List<Observer> observers = new ArrayList<>();
private String stockName;
private double price;

public void setStockData(String stockName, double price) {
this.stockName = stockName;
this.price = price;
notifyObservers();
}

@Override
public void registerObserver(Observer observer) {
observers.add(observer);
}

@Override
public void unregisterObserver(Observer observer) {
observers.remove(observer);
}

@Override
public void notifyObservers() {
for (Observer observer : observers) {
observer.update(stockName, price);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package clean.code.design_patterns.requirements.observer;
// Subject interface
interface Subject {
void registerObserver(Observer observer);
void unregisterObserver(Observer observer);
void notifyObservers();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package clean.code.design_patterns.requirements.strategy;

// Concrete strategy classes
class CreditCardStrategy implements PaymentStrategy {
private String cardNumber;
private String expiryDate;
private String cvv;

public CreditCardStrategy(String cardNumber, String expiryDate, String cvv) {
this.cardNumber = cardNumber;
this.expiryDate = expiryDate;
this.cvv = cvv;
}

@Override
public void pay(double amount) {
System.out.println("Paying $" + amount + " using credit card: " + cardNumber);
// Add logic for credit card payment processing
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package clean.code.design_patterns.requirements.strategy;
// Usage example
public class Main {
public static void main(String[] args) {
// Create payment processor
PaymentProcessor paymentProcessor = new PaymentProcessor();

// Set credit card payment strategy
paymentProcessor.setPaymentStrategy(new CreditCardStrategy("1234567890", "12/25", "123"));

// Process payment
paymentProcessor.processPayment(100.0);

// Set PayPal payment strategy
paymentProcessor.setPaymentStrategy(new PayPalStrategy("example@gmail.com", "password"));

// Process payment
paymentProcessor.processPayment(50.0);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package clean.code.design_patterns.requirements.strategy;
class PayPalStrategy implements PaymentStrategy {
private String email;
private String password;

public PayPalStrategy(String email, String password) {
this.email = email;
this.password = password;
}

@Override
public void pay(double amount) {
System.out.println("Paying $" + amount + " using PayPal account: " + email);
// Add logic for PayPal payment processing
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package clean.code.design_patterns.requirements.strategy;
// Context class
class PaymentProcessor {
private PaymentStrategy paymentStrategy;

public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
this.paymentStrategy = paymentStrategy;
}

public void processPayment(double amount) {
paymentStrategy.pay(amount);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package clean.code.design_patterns.requirements.strategy;
// Strategy interface
interface PaymentStrategy {
void pay(double amount);
}