1. 程式人生 > >模板設計模式Java初印象

模板設計模式Java初印象

概述
====

模板設計模式的兩種方式:
1.基於繼承的實現
2.基於組合的實現

一、基於繼承的實現
1.首先,建立一個模板類MyJdbcTemplateByIn,在模板類的execute方法中定義呼叫過程

public abstract class MyJdbcTemplateByIn {

    private void beginConnection()
    {
        System.out.println("begin connetction");
    }

    private void closeConnection
() { System.out.println("close connetction"); } public abstract void run(); public void execute() { beginConnection(); run(); closeConnection(); } }

2.建立類RoleDao和MessageDao繼承於模板類MyJdbcTemplateByIn,並分別重寫run方法

public class RoleDao extends
MyJdbcTemplateByIn {
@Override public void run() { System.out.println("role add"); } }
public class MessageDao extends MyJdbcTemplateByIn {
    @Override
    public void run() {
        System.out.println("message add");
    }
}

3.測試

public class TestTemplate {
    //基於繼承的方式
    @test
    public
void test1() throws Exception { MyJdbcTemplateByIn myJdbcTemplateByIn = new RoleDao(); myJdbcTemplateByIn.execute(); System.out.println("============="); MyJdbcTemplateByIn myJdbcTemplateByIn2 = new MessageDao(); myJdbcTemplateByIn2.execute(); }

執行結果為

begin connetction
role add
close connetction
=============
begin connetction
message add
close connetction

二、基於組合的實現
1.首先建立模板類

public class MyJdbcTemplate {

    private void beginConnection()
    {
        System.out.println("begin connetction");
    }


    private void closeConnection()
    {
        System.out.println("close connetction");
    }

    /**
     * 呼叫方法:傳入一個鉤子函式的介面
     */
    public void execute(MyCallback callback)
    {
        beginConnection();
        callback.doInTemplate();
        closeConnection();
    }

    /**
     * 將所有要實現的方法都建立在模板中
     */
    public void add(final int id)   
    {
        execute(new MyCallback() {

            @Override
            public void doInTemplate() {
                System.out.println("add"+id);
            }
        });
    }

    public void delete(final int id)
    {
        execute(new MyCallback() {

            @Override
            public void doInTemplate() {
                System.out.println("delete"+id);
            }
        });
    }
}

public interface MyCallback {

     public void doInTemplate();
}
public class RoleDao extends MyJdbcTemplateByIn {

    private MyJdbcTemplate mt = new MyJdbcTemplate();

    public void add(int id)
    {
        mt.add(id);
    }

    public void delete(int id)
    {
        mt.delete(id);
    }

    @Override
    public void run() {
        System.out.println("role add");
    }

    @Override
    public boolean isLog() {
        return false;
    }

}
public class TestTemplate {
    //基於組合的方式
    @Test
    public void test2() throws Exception {
        RoleDao roleDao = new RoleDao();
        roleDao.add(1);
        System.out.println("=============");
        roleDao.delete(2);
    }
}

執行結果:

begin connetction
add1
close connetction
=============
begin connetction
delete2
close connetction

相關推薦

模板設計模式Java印象

概述 ==== 模板設計模式的兩種方式: 1.基於繼承的實現 2.基於組合的實現 一、基於繼承的實現 1.首先,建立一個模板類MyJdbcTemplateBy

Java學習——模板設計模式——抽象類的實際應用

設計模式的精髓:解耦。而模板設計模式是通過第三方進行解耦 什麼是內聚、解耦大家可以看一下博主 小異常 的博文:https://blog.csdn.net/sun8112133/article/details/81040275 模板設計模式:(基於抽象類)在一個方法中定義一個演算法的骨架,而將

JAVA基礎(57)---模板設計模式

由抽象類衍生出的一種設計模式:模板設計模式(模板方法設計模式) 模板設計模式,就是將完成某件事固定不變的步驟設計成模板,要用 abstract 修飾的方法,然後將不確定的業務邏輯設計成抽象的方法,目的就是讓子類繼承並且複寫該抽象方法,能夠為了實現可擴充套件性。官方的說法是:定義一個操作中的演

Java——模板設計模式和列舉類的實現

嘗試以MarkdownPad2方式寫部落格,感覺十分有條理,第一次使用花的時間較長,但是熟能生巧,後面會越用越熟練,更快吧~ 1. 模板設計模式 (1).模板方法模式就是定義一個演算法的骨架,而將具體的演算法延遲到子類來實現 (2)優點:使用模板方法模式

Java設計模式-5.模板設計模式

模板設計模式 1、模版設計模式概述 模版設計模式,就是定義一個演算法的骨架,而將具體的演算法延遲到子類中來實現。 優點:使用模板設計模式,在定義演算法骨架的同時,可以很靈活的實現具體的不同演算

java模板設計模式

模板模式 :解決某類事情的步驟有些是固定的,有些是會發生變化的,那麼這時候我們可以為這類事情提供一個模板程式碼,從而提高效率 。 模板模式的步驟: 先寫出解決該類事情其中 的一件的解決方案。 分析

java模板設計模式

需求:編寫一個計算程式碼執行時間的模板 模板設計模式的步驟: 1)先寫出解決該類問題其中的一件解決方案 2)分析程式碼,把會發生變化的程式碼抽出來獨立成一個方法,同時把這個方法寫成一個抽象的方法abstarct  3)若果要使用模板類,就只需要繼承就可以使用, 4)為啦防止

六種常用的設計模式java實現(四)模板模式

模板模式,估計大家應該都接觸過,比如說,在完成某個業務邏輯前,需要處理一點事,在完成後也要處理一點事,這樣就可以把不一樣的地方給抽象出來,然後公共的地方都是一樣的,這樣的場景就會用到模板模式。 一、基本概念 模板方法模式是類的行為模式。準備一個抽象類,將部分

JAVA-模板設計模式

  模板方法模式是類的行為模式。準備一個抽象類,將部分邏輯以具體方法以及具體建構函式的形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。這就是模板方法模式的用意。(引用自閻巨集博士的《JAVA

Java 抽象類 和 模板設計模式(Template)

抽象類,使用abstract宣告的類,用於被子類繼承抽象方法一定要放在抽象類中,抽象類也可以包含非抽象方法;定義抽象類:abstract class A{ private Stirng info = "A"; public void print(){ Syst

十三、模板設計模式

time nbsp args 功能 程序 模板設計模式 結束時間 pan () /* 模板設計模式:實現一個功能時,功能的一部分是確定的,一部分是不確定的,確定的部分還會用到 不確定的部分,那麽就把不確定的部分暴露出去,讓子類去實現 實現計算

C#模板設計模式使用和學習心得

傳統 oracle 設計模式 管理系統 邏輯 導致 www. 離開 不回 模板設計模式: 模版方法模式由一個抽象類和一個(或一組)實現類通過繼承結構組成,抽象類中的方法分為三種: 抽象方法:父類中只聲明但不加以實現,而是定義好規範,然後由它的子類去實現。

二、 抽象類延伸出的模板設計模式

pro 頂級 pri bsp 抽象類 pub 代碼 AC method 具體可參考:https://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html 模板設計模式的關鍵:子類可以置換掉父類的可變部分,但

常用設計模式Java——Design pattern

設計模式 設計模式(Design Pattern)是一套被反覆使用、多數人知曉的、經過分類的、程式碼設計經驗的總結。 使用設計模式的目的:為了程式碼複用,增加可維護性 面向物件思想設計原則 單一職責原則 高內聚、低耦合

模板設計模式

     在程式開發中你可能經常遇到這種情況,某個要實現的演算法分為多個步驟,有些步驟是固定不變的,有些步驟是不固定的,為了提高程式碼的可擴充套件性和可維護性,模板設計模式在這種場景下就派上用場了。     在模板設計模式中,一個演算法可以分為多個步驟,每個

設計模式理解

什麼是設計模式? 簡單的說,它是一個程式碼設計經驗的一個總結(一種套路),經過反覆的使用,被多數人知曉,不斷的分類而衍生出來。是為人們解決某類重複出現問題的一套成功或有效的解決方案。 為什麼要使用設計模式? 每個模式都描述了我們在程式設計過程中出現的各種問題,使用設計模式,可

Dao設計模式java

Data Access object 我們要在資料庫中加入一種訪問更為方便的物件,它有訪問資料庫的各種方法,它是一個介面 宣告規則 準備 將架包拷入專案下新建的lib資料夾中 並匯入 將我們寫好的工具類加入src下的包中 將我們的properties檔案放入專案下或者sr

策略設計模式模板設計模式的區別

策略設計模式:準備一組演算法,並將演算法封裝起來,使得它們可以互換;它的重心不是如何現實演算法而是如何組合. 客戶端得清楚演算法的情況. 模板方法設計模式:在基類中定義骨架方法,其他的延遲到子類中實現. 通過排序來比較兩者不同: 1.定義一個普通的選擇排序類:

設計模式01-模板設計模式

pri wrap rri ride pub 編寫 system prot oid 父類編寫算法結構碼,子類實現邏輯細節; public class TemplateMethod { public final void print(String message) {