1. 程式人生 > >[Design Pattern]Python設計模式——模板模式

[Design Pattern]Python設計模式——模板模式

1.模版方法模式

做題的列子:

需求:有兩個學生,要回答問題,寫出自己的答案

複製程式碼
#encoding=utf-8

class StudentA():
    def answer1(self):
        print '題目一:XXXXXX'
        print '我的答案是:B'
    def answer2(self):
        print '題目一:XXXXXX'
        print '我的答案是:B'

class StudentB():
    def answer1(self):
        print '題目一:XXXXXX'
        print
'我的答案是:C' def answer2(self): print '題目一:XXXXXX' print '我的答案是:D' if __name__=='__main__': student_a=StudentA() student_a.answer1() student_a.answer2() student_b=StudentB() student_b.answer1() student_b.answer2()
複製程式碼

這樣寫的確定是重複的東西太多了,例如寫題目,例如“我的答案是”等等,如果我們需要建立很多個studentX類,萬一某一天需要改題目,就要改動很多東西,

所以模版方法模式的宗旨就是,所有重複的東西,即需要寫兩次以上的東西都放在一個模版裡面(可以是父類,也可以是一個函式)

模版方法的實現:

複製程式碼
#encoding=utf-8

class Student():
    def answer1(self):
        print 'Q1:XXX'
        print 'A1:%s' %self.get_answer1()


    def get_answer1(self):
        return 'A'


    def answer2(self):
        print 'Q2:XXX'


        print 'A2:%s'% self.get_answer2()


    def get_answer2(self):
        return 'A'




class StudentA(Student):


    def get_answer1(self):
        return 'B'


    def get_answer2(self):
        return 'B'




class StudentB(Student):
    def get_answer1(self):
        return 'C'


    def get_answer2(self):
        return 'D'


if __name__=='__main__':
    student_a=StudentA()
    student_a.answer1()
    student_a.answer2()
    student_b=StudentB()
    student_b.answer1()
    student_b.answer2()
複製程式碼

這裡使用了的一個技巧是,可以在父類定義一個公共的方法,然後子類重寫這個方法來實現子類之間的差異化。

總結:

這個其實就是把多個類中共有的東西給抽出來,作為抽象類

相關推薦

[Design Pattern]Python設計模式——模板模式

1.模版方法模式 做題的列子: 需求:有兩個學生,要回答問題,寫出自己的答案 #encoding=utf-8 class StudentA(): def answer1(self): print '題目一:XXXXXX' print '我的答案是:B'

[設計模式] 模板模式(Template Pattern)

原文連結 https://www.cnblogs.com/qq-361807535/p/6854191.html 引入:這幾天在看一本講Spring原始碼的書《SPRING技術內幕》裡面在講載入配置檔案的時候,可以有不同的載入方式,如根據檔案系統目錄載入配置檔案(FileSystemXm

設計模式——模板模式(Template Pattern

  在讀Spring原始碼的時候,發現Spring程式碼中運用了大量的模板模式,比如根據檔案系統目錄載入配置檔案(FileSystemXmlApplicationContext),類路徑載入配置檔案(ClassPathXmlApplicationContext),以及根據專案上下文目錄(XmlWebAppli

java設計模式-- 模板模式 template pattern

模板模式 Template pattern   定義一個操作中演算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變演算法的結構即可重定義該演算法的某些特定步驟。   通俗點的理解就是 :完成一件事情,有固定的數個步驟,但是每個步驟根據物件的不同,而實現細節不同;就可以

16-Python設計模式--模板模式

一、股票查詢客戶端 投資股票是種常見的理財方式,我國股民越來越多,實時查詢股票的需求也越來越大。今天,我們通過一個簡單的股票查詢客戶端來認識一種簡單的設計模式:模板模式。根據股票程式碼來查詢股價分為如下幾個步驟:登入、設定股票程式碼、查詢、展示。構造如下的虛擬股票查詢器: class

從壹開始 [ Design Pattern ] 之一 ║ 設計模式開篇講

緣起   不說其他的沒用的開場白了,直接給大家分享三個小故事,都來自於我的讀者粉絲(我厚著臉皮稱為粉絲吧

.NET開發設計模式-模板模式

sys pre exec namespace ace ext 模式 style nbsp using System; using System.Collections.Generic; using System.Linq; using System.Text; using

設計模式--模板模式

pos 架設 nvi array ava iter reg new ken http://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html 模板模式 一句話來說,就是比人將骨架設計好,你自己填充其余的東

C# - 設計模式 - 模板模式

共同點 light 完成 兩個 .html www class override ria 模板模式 問題場景 咖啡和茶派生於抽象類飲料,咖啡和茶都具有燒水的方法,所以可以將燒水的方法提取到抽象類飲料中去實現,而咖啡具有一個向杯子加咖啡粉的方法,茶具有一個向杯子加茶葉的方

設計模式-模板模式-C++實現

模板模式:定義一個操作的演算法和骨架,而將一些步驟延遲到子類中。使得子類可以不改變一個演算法的結構的情況下可以重新定義這個演算法的一些步驟。 比如: 炒菜這件事情就有統一的步驟,先放油再放調料加火炒菜,這個固定不變的。而且順序也是不變的。但是炒不同的菜加油的多少,火候的掌握是不相同的

設計模式-模板模式

父類指定了一個方法以及步驟,具體的步驟的實現由子類來實現。 比如說:我們每天都要上班工作,但是每個人在這一天的不同時間點乾的事情是不一樣的,有人在該上班的時候在工作,有的可能還在睡覺;但是不管怎樣這一天都是要工作的,所以就造成了在工作的時間做了不同的事情。抽象到程式中的實現

C#設計模式-模板模式

using System; using System.Collections.Generic; namespace TestCS { class Program { // template pattern static void Main(strin

移動開發之設計模式- 模板模式(IOS&Android)

資源 完全參照模板模式|菜鳥教程但不包括IOS程式碼 模板模式 在模板模式(Template Pattern)中,一個抽象類公開定義了執行它的方法的方式/模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。 介紹 意圖

java設計模式-模板模式

目錄1. 介紹1.1 定義定義一個模板結構,將具體內容延遲到子類去實現。1.2 主要作用在不改變模板結構的前提下在子類中重新定義模板中的內容。模板方法模式是基於”繼承“的;1.3 解決的問題提高程式碼複用性 將相同部分的程式碼放在抽象的父類中,而將不同的程式碼放入不同的子類中

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

模板模式 模板模式的定義 定義一個操作中的演算法的框架,而將一些步驟延遲到子類中。使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟 通用類圖: 為了防止惡意的操作,一般模板方法都加上final關鍵字,不允許被覆寫。 抽象模板

程式碼詳解設計模式--模板模式

模板模式   一個抽象類公開定義了執行方法的模板,它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。 優點: 封裝不變部分,擴充套件可變部分。 提取公共程式碼,便於維護。 行為由父類控制,子類實現。 缺點:

JAVA的23種設計模式---模板模式

概要: 該文章參考了《設計模式之禪》一書及一些前輩的部落格文章 1.該文章闡述了模板模式的原理及展示了模板模式的示例; 2.該文章適合初學設計模式的技術人員研習; 3.該文章有許多不足之處,請各位大咖指正,噴子繞道; 正文: 模板模式:定義一個操作中

設計模式——模板模式

  一、引子   這是一個很簡單的模式,卻被非常廣泛的使用。之所以簡單是因為在這個模式中僅僅使用到了繼承關係。   繼承關係由於自身的缺陷,被專家們扣上了“罪惡”的帽子。“使用委派關係代替繼承關係”,“儘量使用介面實現而不是抽象類繼承”等等專家警告,讓我們這些菜鳥對繼承“另眼相看”。   其實,繼承還是有很

java設計模式--模板模式

16.1 場景問題 16.1.1 登入控制 幾乎所有的應用系統,都需要系統登入控制的功能,有些系統甚至有多個登入控制的功能,比如:普通使用者可以登入前臺,進行相應的業務操作;而工作人員可以登入後臺,進行相應的系統管理或業務處理。 現在有這麼

從壹開始 [ Design Pattern ] 之二 ║ 單例模式 與 Singleton

前言 這一篇來源我的公眾號,如果你沒看過,正好直接看看,如果看過了也可以再看看,我稍微修改了一些內容,今天講解的內容如下:               一、什麼是單例模式   【單例模式】,英文名稱:Singleton P