public class Singleton {
private static Singleton instance;
private Singleton() {
// Construtor privado para impedir a criação de instâncias diretas.
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
// A classe Singleton garante que apenas uma instancia seja criada e fornecerá essa instancia sempre que getInstance() for chamado.
public interface PaymentStrategy {
void pay(int amount);
}
public class CreditCardPayment implements PaymentStrategy {
private String cardNumber;
public CreditCardPayment(String cardNumber) {
this.cardNumber = cardNumber;
}
@Override
public void pay(int amount) {
System.out.println("Pagamento de $" + amount + " com cartão de crédito " + cardNumber);
}
}
public class PayPalPayment implements PaymentStrategy {
private String email;
public PayPalPayment(String email) {
this.email = email;
}
@Override
public void pay(int amount) {
// Lógica para pagamento com PayPal
System.out.println("Pagamento de $" + amount + " com PayPal usando o email " + email);
}
}
// Interface para a estratégia
// Implementações das estratégias
// Lógica para pagamento com PayPal
// Aqui, temos uma interface PaymentStrategy que define o contrato para as estratégias de pagamento. Em seguida, implementamos duas estratégias diferentes: CreditCardPayment e PayPalPayment.
public class Singleton {
private static Singleton instance;
}
// A classe Singleton garante que apenas uma instancia seja criada e fornecerá essa instancia sempre que
getInstance()for chamado.public interface PaymentStrategy {
void pay(int amount);
}
public class CreditCardPayment implements PaymentStrategy {
private String cardNumber;
}
public class PayPalPayment implements PaymentStrategy {
private String email;
}
// Interface para a estratégia
// Implementações das estratégias
// Lógica para pagamento com PayPal
// Aqui, temos uma interface PaymentStrategy que define o contrato para as estratégias de pagamento. Em seguida, implementamos duas estratégias diferentes: CreditCardPayment e PayPalPayment.