이 글에서는 주로 Java의 고전적인 디자인 패턴 중 템플릿 메소드 패턴을 소개하고, 템플릿 메소드 패턴의 원리와 정의를 간략하게 설명하며, Java 템플릿 메소드 패턴의 구체적인 사용법을 도움이 필요한 친구들이 참고할 수 있는 형태로 분석합니다. it
이 글은 자바 디자인 패턴 중 템플릿 메소드 패턴을 예시와 함께 설명하고 있습니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
우리 삶에는 많은 것들이 구체적인 단계를 포함합니다. 업무를 처리하기 위해 은행에 가는 경우 일반적인 단계는 다음과 같습니다. 번호 받기 -> 양식 작성 -> 전화번호가 호출될 때까지 기다리기 -> 업무 처리. 이 단계 중 번호를 찍는 등 모두가 받아야 하는 부분은 그대로 유지되고, 양식을 작성하는 등 변경해야 하는 부분도 있지만, 업종에 따라 작성해야 하는 서류가 다릅니다. 또 다른 예로, 외식할 때 일반적인 단계는 주문 -> 대기 -> 식사 -> 지불이며 동일한 패턴을 찾을 수 있습니다. 그런 일은 셀 수 없이 많습니다.
프로젝트 개발에서 이러한 상황이 발생할 수도 있습니다. 여러 기능 모듈이 유사하거나 동일한 작업 단계를 가질 수 있지만 하나의 링크나 단계는 하나 이상의 공통을 추출할 수 있습니다. 상위 클래스(템플릿)를 사용하면 하위 클래스를 구현할 수 있습니다. 구체적인 방법. 예를 들어 비즈니스를 처리하기 위해 은행에 가겠습니다.
시뮬레이션 추상 클래스:
/** * 模板方法模式的模板框架(以去银行办理业务为例) * @description: */ public abstract class TempletBankFrame { /* 比如:去柜台办理银行卡业务* */ public final void handleBankCard() { /* 第一步:进入银行大厅取号* */ takeNumber(); /* 第二步:填写办理业务的相关单据* */ if(!isNeedThisMethod()){//特殊情况可以添加判断,如我之前有填写好单子,那今天就不必再填写了 writeBill(); } /* 第三步:等待工作人员叫号* */ waitCall(); /* 第四步:办理业务* */ handleCard(); } /* 取号步骤是不需要更改的,所以我们用private修饰* */ private void takeNumber() { System.out.println("办理银行业务请取号!"); } /* 办理的业务不同,填写的内容不同,所以我们用protected修饰,让子类去处理具体业务* */ protected abstract void writeBill(); /* 等待叫号步骤也是不需要更改的,所以我们用private修饰* */ private void waitCall() { System.out.println("办理银行业务请取号!"); } /* 办理的业务不同,用protected修饰,让子类去处理具体业务* */ protected abstract void handleCard(); /*定义一个钩子方法:由抽象类声明并实现,而子类会加以扩展。通常抽象类给出的实现是一个空实现,作为方法的默认实现。**/ protected abstract boolean isNeedThisMethod(); }
콘크리트 구현 클래스: 예: 자금 인출 처리
/** * 办理取钱业务 * @description: */ public class GetMoney extends TempletBankFrame { @Override protected void writeBill() { System.out.println("我在填写取钱的单据!"); } @Override protected void handleCard() { System.out.println("我要取500万大洋"); } @Override protected boolean isNeedThisMethod() { System.out.println("我已经填写过单子,今天就直接等待叫号了吧!"); return true; } }
콘크리트 구현 클래스: 예: I am 은행 카드 신청 예정
/** * 办理银行卡 * @description: */ public class TackCard extends TempletBankFrame { @Override protected void writeBill() { System.out.println("我填写的是办理银行卡单据"); } @Override protected void handleCard() { System.out.println("我在办卡,即将完成!"); } @Override protected boolean isNeedThisMethod() { return false; } }
테스트 클래스
/** * 模板方法模式测试类 * @description: */ public class Test { public static void main(String[] args) { GetMoney money=new GetMoney(); money.handleBankCard();//调用模板中的办理业务方法 System.out.println("———–分隔线—————-"); TackCard card=new TackCard(); card.handleBankCard(); } }
최종 출력 결과:
办理银行业务请取号! 我已经填写过单子,今天就直接等待叫号了吧! 办理银行业务请取号! 我要取500万大洋 ———–分隔线—————- 办理银行业务请取号! 我填写的是办理银行卡单据 办理银行业务请取号! 我在办卡,即将完成!
위 내용은 Java 클래식 디자인 패턴의 템플릿 메서드 패턴 정의 및 사용에 대한 코드 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!