From 70fe4a3ca9007f7b075e8a2a47e76aeaf48b8673 Mon Sep 17 00:00:00 2001 From: Dhrubajyoti Bhattacharjee Date: Thu, 2 Jul 2020 07:04:41 +0200 Subject: [PATCH] BAEL-4007 Interface Segregation Principle (#9579) Co-authored-by: Dhrubajyoti Bhattacharjee --- .../main/java/com/baeldung/i/fixed/Bank.java | 5 +++ .../com/baeldung/i/fixed/BankPayment.java | 21 ++++++++++++ .../main/java/com/baeldung/i/fixed/Loan.java | 6 ++++ .../com/baeldung/i/fixed/LoanPayment.java | 26 +++++++++++++++ .../java/com/baeldung/i/fixed/Payment.java | 8 +++++ .../com/baeldung/i/polluted/BankPayment.java | 32 +++++++++++++++++++ .../com/baeldung/i/polluted/LoanPayment.java | 31 ++++++++++++++++++ .../java/com/baeldung/i/polluted/Payment.java | 13 ++++++++ 8 files changed, 142 insertions(+) create mode 100644 patterns/solid/src/main/java/com/baeldung/i/fixed/Bank.java create mode 100644 patterns/solid/src/main/java/com/baeldung/i/fixed/BankPayment.java create mode 100644 patterns/solid/src/main/java/com/baeldung/i/fixed/Loan.java create mode 100644 patterns/solid/src/main/java/com/baeldung/i/fixed/LoanPayment.java create mode 100644 patterns/solid/src/main/java/com/baeldung/i/fixed/Payment.java create mode 100644 patterns/solid/src/main/java/com/baeldung/i/polluted/BankPayment.java create mode 100644 patterns/solid/src/main/java/com/baeldung/i/polluted/LoanPayment.java create mode 100644 patterns/solid/src/main/java/com/baeldung/i/polluted/Payment.java diff --git a/patterns/solid/src/main/java/com/baeldung/i/fixed/Bank.java b/patterns/solid/src/main/java/com/baeldung/i/fixed/Bank.java new file mode 100644 index 0000000000..7d1c93e83f --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/i/fixed/Bank.java @@ -0,0 +1,5 @@ +package com.baeldung.i.fixed; + +public interface Bank extends Payment { + void initiatePayments(); +} diff --git a/patterns/solid/src/main/java/com/baeldung/i/fixed/BankPayment.java b/patterns/solid/src/main/java/com/baeldung/i/fixed/BankPayment.java new file mode 100644 index 0000000000..f077a6772b --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/i/fixed/BankPayment.java @@ -0,0 +1,21 @@ +package com.baeldung.i.fixed; + +import java.util.List; + +public class BankPayment implements Bank { + + @Override + public void initiatePayments() { + + } + + @Override + public Object status() { + return null; + } + + @Override + public List getPayments() { + return null; + } +} diff --git a/patterns/solid/src/main/java/com/baeldung/i/fixed/Loan.java b/patterns/solid/src/main/java/com/baeldung/i/fixed/Loan.java new file mode 100644 index 0000000000..74141113db --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/i/fixed/Loan.java @@ -0,0 +1,6 @@ +package com.baeldung.i.fixed; + +public interface Loan extends Payment { + void intiateLoanSettlement(); + void initiateRePayment(); +} diff --git a/patterns/solid/src/main/java/com/baeldung/i/fixed/LoanPayment.java b/patterns/solid/src/main/java/com/baeldung/i/fixed/LoanPayment.java new file mode 100644 index 0000000000..b6c32d7730 --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/i/fixed/LoanPayment.java @@ -0,0 +1,26 @@ +package com.baeldung.i.fixed; + +import java.util.List; + +public class LoanPayment implements Loan { + + @Override + public void intiateLoanSettlement() { + + } + + @Override + public void initiateRePayment() { + + } + + @Override + public Object status() { + return null; + } + + @Override + public List getPayments() { + return null; + } +} diff --git a/patterns/solid/src/main/java/com/baeldung/i/fixed/Payment.java b/patterns/solid/src/main/java/com/baeldung/i/fixed/Payment.java new file mode 100644 index 0000000000..620c944944 --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/i/fixed/Payment.java @@ -0,0 +1,8 @@ +package com.baeldung.i.fixed; + +import java.util.List; + +public interface Payment { + Object status(); + List getPayments(); +} diff --git a/patterns/solid/src/main/java/com/baeldung/i/polluted/BankPayment.java b/patterns/solid/src/main/java/com/baeldung/i/polluted/BankPayment.java new file mode 100644 index 0000000000..c8f667c25f --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/i/polluted/BankPayment.java @@ -0,0 +1,32 @@ +package com.baeldung.i.polluted; + +import java.util.Collections; +import java.util.List; + +public class BankPayment implements Payment { + + @Override + public void initiatePayments() { + + } + + @Override + public Object status() { + return null; + } + + @Override + public List getPayments() { + return Collections.emptyList(); + } + + @Override + public void intiateLoanSettlement() { + throw new UnsupportedOperationException("This is not a loan payment"); + } + + @Override + public void initiateRePayment() { + throw new UnsupportedOperationException("This is not a loan payment"); + } +} diff --git a/patterns/solid/src/main/java/com/baeldung/i/polluted/LoanPayment.java b/patterns/solid/src/main/java/com/baeldung/i/polluted/LoanPayment.java new file mode 100644 index 0000000000..8535d7ad0a --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/i/polluted/LoanPayment.java @@ -0,0 +1,31 @@ +package com.baeldung.i.polluted; + +import java.util.List; + +public class LoanPayment implements Payment { + + @Override + public void initiatePayments() { + + } + + @Override + public Object status() { + return null; + } + + @Override + public List getPayments() { + return null; + } + + @Override + public void intiateLoanSettlement() { + + } + + @Override + public void initiateRePayment() { + + } +} diff --git a/patterns/solid/src/main/java/com/baeldung/i/polluted/Payment.java b/patterns/solid/src/main/java/com/baeldung/i/polluted/Payment.java new file mode 100644 index 0000000000..987b4cee33 --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/i/polluted/Payment.java @@ -0,0 +1,13 @@ +package com.baeldung.i.polluted; + +import java.util.List; + +public interface Payment { + void initiatePayments(); + Object status(); + List getPayments(); + + //Loan related methods + void intiateLoanSettlement(); + void initiateRePayment(); +}