Heim > Java > javaLernprogramm > Hauptteil

Codebeispiele zur Definition und Verwendung von Vorlagenmethodenmustern in klassischen Java-Entwurfsmustern

黄舟
Freigeben: 2017-08-10 09:19:57
Original
1152 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich das Vorlagenmethodenmuster des klassischen Java-Entwurfsmusters vor. Er erläutert kurz das Prinzip und die Definition des Vorlagenmethodenmusters und analysiert die spezifische Verwendung des Java-Vorlagenmethodenmusters in Form von Beispielen

Dieser Artikel beschreibt das Vorlagenmethodenmuster des Java-Entwurfsmusters anhand von Beispielen. Teilen Sie es als Referenz mit allen. Die Einzelheiten lauten wie folgt:

In unserem Leben umfassen viele Dinge bestimmte Schritte. Wenn Sie zu einer Bank gehen, um Geschäfte abzuwickeln, ist die übliche Reihenfolge: Nehmen Sie eine Nummer –> füllen Sie das Formular aus –> warten Sie, bis Ihre Nummer angerufen wird –> Von diesen Schritten bleiben einige unverändert, wie zum Beispiel das Ausfüllen einer Nummer, die von jedem übernommen werden muss, andere müssen sich jedoch ändern, wie zum Beispiel das Ausfüllen von Formularen, aber je nach Unternehmen sind die auszufüllenden Dokumente unterschiedlich. Ein anderes Beispiel: Wenn wir essen gehen, lauten die allgemeinen Schritte: Bestellen -> Warten -> Essen -> Bezahlen, und das gleiche Muster kann gefunden werden. Es gibt unzählige solcher Dinge.

Während der Projektentwicklung kann es auch vorkommen, dass mehrere Funktionsmodule ähnliche oder identische Betriebsschritte haben, aber ein Link oder Schritt ist unterschiedlich. Wir können das Extrahieren einer oder mehrerer gemeinsamer übergeordneter Klassen (Vorlagen) ermöglichen Unterklassen zur Implementierung bestimmter Methoden. Nehmen wir als Beispiel den Gang zur Bank, um Geschäfte abzuwickeln:

Simulierte abstrakte Klasse:


/**
* 模板方法模式的模板框架(以去银行办理业务为例)
* @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();
}
Nach dem Login kopieren

Konkrete Implementierungsklasse: Zum Beispiel der Umgang mit Geld Abhebungen


/**
* 办理取钱业务
* @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;
}
}
Nach dem Login kopieren

Spezifische Umsetzungsklasse: Zum Beispiel werde ich eine Bankkarte beantragen


/**
* 办理银行卡
* @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;
}
}
Nach dem Login kopieren

Testklasse


/**
* 模板方法模式测试类
* @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();
}
}
Nach dem Login kopieren

Das endgültige Ausgabeergebnis:


办理银行业务请取号!
我已经填写过单子,今天就直接等待叫号了吧!
办理银行业务请取号!
我要取500万大洋
———–分隔线—————-
办理银行业务请取号!
我填写的是办理银行卡单据
办理银行业务请取号!
我在办卡,即将完成!
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonCodebeispiele zur Definition und Verwendung von Vorlagenmethodenmustern in klassischen Java-Entwurfsmustern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage