package com.insightfullogic.java8.examples.chapter8.template_method.traditional; import com.insightfullogic.java8.examples.chapter8.template_method.ApplicationDenied; // BEGIN LoanApplication public abstract class LoanApplication { public void checkLoanApplication() throws ApplicationDenied { checkIdentity(); checkCreditHistory(); checkIncomeHistory(); reportFindings(); } protected abstract void checkIdentity() throws ApplicationDenied; protected abstract void checkIncomeHistory() throws ApplicationDenied; protected abstract void checkCreditHistory() throws ApplicationDenied; private void reportFindings() { // END LoanApplication } }