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

代碼是用java寫的 看了本java書發現他的思想確實是先進!!!java

主要仍是繼承和抽象方法的一些應用看代碼吧,我不喜歡扯淡,是幹啥的百度都有。算法

意圖:定義一個操做中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類能夠不改變一個算法的結構便可重定義該算法的某些特定步驟。ide

反正我以前是看不懂的 ,反之我知道能延遲加載就延遲加載。spa

第一個類 模板類code

public abstract class DBhple {
    public void coonection() { PUT(); GET(); POST(); DELETE(); } public abstract void PUT(); public abstract void GET(); public abstract void POST(); public abstract void DELETE(); }

 

繼承:他的抽象方法blog

public class MSSQLDB extends DBhple {

    @Override
    public void PUT() { // TODO Auto-generated method stub System.out.println("來自S的修改"); } @Override public void GET() { // TODO Auto-generated method stub System.out.println("來自s查找"); } @Override public void POST() { // TODO Auto-generated method stub System.out.println("來自s建立"); } @Override public void DELETE() { // TODO Auto-generated method stub System.out.println("來自so刪除"); } }
public class OracleDB extends DBhple {

    @Override
    public void PUT() { // TODO Auto-generated method stub System.out.println("來自o的修改"); } @Override public void GET() { // TODO Auto-generated method stub System.out.println("來自o查找"); } @Override public void POST() { // TODO Auto-generated method stub System.out.println("來自o建立"); } @Override public void DELETE() { // TODO Auto-generated method stub System.out.println("來自o刪除"); } }

客戶端 繼承

public static void main(String[] args) {
        // TODO Auto-generated method stub
        /*
         * DBhple sdb1=new MSSQLDB(); sdb1.DELETE(); sdb1.GET(); sdb1.POST();
         * sdb1.PUT();
         * 
         * DBhple odb2=new MSSQLDB(); odb2.DELETE(); odb2.GET(); odb2.POST();
         * odb2.PUT();
         */ Db(new MSSQLDB()); Db(new OracleDB()); } public static void Db (DBhple db) { db.coonection(); }

註釋起來的垃圾代碼是之前不動腦子的實現方案 io

反正實例化了加在那.....是不會錯的,嚴重冗餘。模板

看了半本java確實他的思想確實很先進(書名叫Java的核心思想卷一)class

相關文章
相關標籤/搜索