1. 程式人生 > >模板方法設計模式擴充套件(Hook Method)

模板方法設計模式擴充套件(Hook Method)

package Template_Method_Pattern;

import java.util.Scanner;

/**
 * 模板方法模式的擴充套件
 * 鉤子方法(Hook Method)
 * @author dd
 *
 */
public class demo2 {
    public static void main(String[] args) {
        System.out.println("--------------寶馬3系---------------");
        System.out.println("寶馬3系需不需要鳴笛?0:不需要;  1:需要"
); Scanner s = new Scanner(System.in); String str = s.nextLine(); BMWX3Model b3 = new BMWX3Model(); if(str.equals("0")){ b3.setAlarm(false); } b3.run(); System.out.println("--------------寶馬5系-------------------"); BMWX5Model b5 = new
BMWX5Model(); b5.run(); } } abstract class BMWModel{ protected abstract void start(); protected abstract void stop(); protected abstract void alarm(); protected abstract void engineBoom(); final public void run(){ this.start(); this.engineBoom(); if
(this.isAlarm()){ this.alarm(); } this.stop(); } protected boolean isAlarm(){ return true; } } class BMWX3Model extends BMWModel{ private boolean alarmFlag = true; protected boolean isAlarm(){ return this.alarmFlag; } public void setAlarm(boolean isAlarm){ this.alarmFlag = isAlarm; } @Override protected void start() { // TODO Auto-generated method stub System.out.println("寶馬3系啟動"); } @Override protected void stop() { // TODO Auto-generated method stub System.out.println("寶馬3系停車"); } @Override protected void alarm() { // TODO Auto-generated method stub System.out.println("寶馬3系鳴笛"); } @Override protected void engineBoom() { // TODO Auto-generated method stub System.out.println("寶馬3系引擎響"); } } class BMWX5Model extends BMWModel{ @Override protected void start() { // TODO Auto-generated method stub System.out.println("寶馬5系啟動"); } @Override protected void stop() { // TODO Auto-generated method stub System.out.println("寶馬5系停下"); } @Override protected void alarm() { // TODO Auto-generated method stub System.out.println("寶馬5系鳴笛"); } @Override protected void engineBoom() { // TODO Auto-generated method stub System.out.println("寶馬5系引擎響"); } protected boolean isAlarm(){ return false; } }

相關推薦

模板方法設計模式擴充套件Hook Method

package Template_Method_Pattern; import java.util.Scanner; /** * 模板方法模式的擴充套件 * 鉤子方法(Hook Method) * @author dd * */ public cl

Java設計模式之一——模板方法設計模式Template Method

設計原則:不要重複 DRY(Don’t Repeat Yourself,不要複製自己) OAOO(Once and Only once,僅此一次):避免程式碼重複 GOF給出的模板方法模式定義如下: Define the skeleton of an algorith

java模板方法設計模式Template Method

模板方法設計模式(Template Method):定義一個演算法骨架,而將一些步驟方法(方法沒必要一定是抽象的)延遲到子類中實現。該模式使得不同的子類可以不改變一個演算法的結構,只重定義該演算法的某些特定步驟方法。 舉個圖形例子: public class Test{

c++ 設計模式8 Factory Method 工廠方法

更改 itl logs 客戶 eos image 分享 一個 工廠方法模式 5. “對象創建”類模式 通過“對象創建”類模式繞開new,來避免對象創建(new)過程中所導致的緊耦合(依賴具體類),從而支持對象創建的穩定。它是接口抽象之後的第一步工作。 5.1 工廠方法 動機

模板方法設計模式質數

package practiceAug7; //模板方法設計模式 public class MoBan { public static void main(String[] args) { new SubTemplate().spendTime(); } } abstra

javaSE (三十八設計模式 單例設計模式餓漢式/懶漢式、簡單工廠模式、工廠模式、介面卡模式模板方法設計模式

1、單例設計模式(餓漢式/懶漢式): 概念:保證類在記憶體中只有一個物件 思路: 私有構造方法,其他類不能再訪問該構造方法了 建立本類物件(就在本類裡建立),將物件的應用作為成員變數,並私有靜態化(在這裡又分為餓漢式和懶漢式,餓漢式直接引用連線物件,而懶漢式在第二步先建

模板方法設計模式

抽象方法 發生 設計 false 。。 lis 調用 ext time /** 模板方法設計模式:父類的普通方法依賴於一個抽象方法,而抽象方法則推遲到子類中提供實現 * 父類中的普通方法只提供通用的算法,把抽象方法暴露出去,讓子類去實現 */public class T

Java 求一段代碼運行所需要的時間——模板方法設計模式

ava rac xtend trac time ring string .get args 原理:結束時間-開始時間 currentTimeMillis abstract class Demo{ public final void getTime(){

java 模板方法設計模式(TemplateMethod)

java 模板方法設計模式(TemplateMethod) 1.模板方法設計模式(TemplateMethod) 2.模板方法的實現 1.模板方法設計模式(TemplateMethod) 抽象類體現的就是一種

Scala設計模式UML圖例和程式碼實現實戰 行為模式--模板方法設計模式

模板方法設計模式  示例類圖 模板方法設計模式適用於實現框架。這裡典型的是演算法通常執行相同的步驟集,然後這些步驟由不同的客戶端以不同的方式實現。您可以提出各種可能的用例。 對於我們的示例,讓我們假設我們要編寫一個應用程式,它將從資料來源中讀取一些資料,解析它,

Java設計模式(九):模板方法設計模式

1. 應用場景 模板模式就是通過抽象類來定義一個邏輯模板,邏輯框架、邏輯原型,然後將無法決定的部分抽象成抽象類交由子類來實現,一般這些抽象類的呼叫邏輯還是在抽象類中完成的。這麼看來,模板就是定義一個框架,比如蓋房子,我們定義一個模板:房子要封閉,有門,有窗等等,但是要什麼樣的門,什麼樣的

Java設計模式模板方法設計模式——寫漂亮的程式碼————

Java設計模式,寫漂亮的程式碼 ————模板方法設計模式 簡介:  模板方法設計模式是Java設計模式中很簡單、應用非常廣泛的的一種設計模式,該模式體現了程式設計的抽象思想(抽象是所有子類的共性封裝), 僅僅使用了Java的繼承機制。其實很

模板方法-設計模式

在日常的工作生活中,有這些場景:(還有其他生活場景) 去銀行辦理業務一般會經過四個流程:取號、排隊、辦理業務以及辦理完業務後對工作人員進行評分等流程,其中取號、排隊和對銀行工作人員進行評分的業務對每個顧客都是同樣的,可以在父類中實現;但是辦理的業務每個人是不同的,取款、存款或者轉賬等,個人的具體業務可以在子

Java 設計模式系列十六觀察者模式(Observer)

for out 其中 如果 observer 業務 ets 同時 hang Java 設計模式系列(十六)觀察者模式(Observer) 觀察者模式是對象的行為模式,又叫發布-訂閱(Publish/Subscribe)模式、模型-視圖(Model/View)模式、源-監聽

Java 設計模式系列二三訪問者模式(Vistor)

聚集 哪些 true 由於 clas .com concrete 為什麽 type Java 設計模式系列(二三)訪問者模式(Vistor) 訪問者模式是對象的行為模式。訪問者模式的目的是封裝一些施加於某種數據結構元素之上的操作。一旦這些操作需要修改的話,接受這個操作的數

JAVA設計模式——代理靜態代理

具體實現 使用 *** inter ali pro eal 成功 dem 定義 為其它的對象提供一種代理,以控制這個對象的訪問 使用場景 當不想直接訪問某個對象的時候,就可以通過代理 1.不想買午餐,同事幫忙帶 2.買車不用去廠裏,去4s店 3.去代理點買火車票,不用去車站

JAVA設計模式——代理動態代理

生成 底層 exe 加載器 use 有一個 隨筆 for oca   傳送門:JAVA設計模式——代理(靜態代理)   序言:   在學習Spring的時候,我們知道Spring主要有兩大思想,一個是IoC,另一個就是AOP,對於IoC,依賴註入就不用多說了,而對於Spri

PHP 流行設計模式示例經過驗證

《設計模式簡介》 設計模式:提供了一種廣泛的可重用的方式來解決我們日常程式設計中常常遇見的問題。設計模式並不一定就是一個類庫或者第三方框架,它們更多的表現為一種思想並且廣泛地應用在系統中。它們也表現為一種模式或者模板,可以在多個不同的場景下用於解決問題。設計模式可以用於加速開發,並且將很多大的想

23種設計模式十九備忘錄模式python_c++實現) .md

23種設計模式之(十九)備忘錄模式(Memento) 本文主要介紹23種設計模式之備忘錄模式,附詳細python/c++示例程式碼。 概念 應用場景 注意事項 程式碼示例 總結 程式碼連結 備忘錄模式(Memento) 概念 備忘錄模式,是行為模式之一,它

23種設計模式二十三迭代器模式python_c++實現) .md

23種設計模式之(二十三)迭代器模式(Iterator) 本文主要介紹23種設計模式之迭代器模式,附詳細python/c++示例程式碼。 概念 應用場景 注意事項 程式碼示例 總結 程式碼連結 迭代器模式(Iterator) 概念 迭代模式,是行為模式之一