設計模式 眾多任務廠 生成器 命令 模板 組合

2021-09-01 17:51:08 字數 1642 閱讀 6041

什麼gof或者這書那書上有很多提到工廠的,簡單工廠,工廠方法,抽象工廠,太多了。

工廠  總結一下,工廠,字面上就是根據需要不停生產東東的。

簡單工廠就是選擇實現,工廠方法說是可以將實現延遲到子類(抽象類實現 定義需要覆寫的方法)實現,而抽象工廠則是用介面進行一步抽象實現,從而實現更高層次的隔離。

public static api createapi(int i)

return new implb();

}

生成器

分離事件構建演算法和部件構造。

咋一看很像工廠+外觀,將實現封裝一下,通過傳入相應的引數選擇性實現內部細節。但是,這種模式還是有其優雅的一面。它分離了整體構建演算法和部件構造。這裡的部件說白了就是上面工廠中選擇實現的條件i.只不過是乙個物件,而且物件內部包含一些資料罷了。如果能將部件的構造與構建演算法完成隔離還是不錯的,即,再新建立乙個部件,可以用其中的演算法來執行結果。

txtbuilder tb = new txtbuilder(); //構造部件,這裡是生成txt,還可以是doc....

director d = new director(tb);//演算法,執行部分。

//構建演算法介面

public inte***ce builder

命令模式

一直認為它是外觀的一種延伸,如果能將這些做到可撤銷操作,則這就是它的乙個亮點。封裝請求,引數化配置,可撤銷回滾。

命令模式樣式很簡單,就是後面會有呼叫a完成某功能,呼叫b完成某功能…………

模板方法

定義乙個操作中的固定的演算法骨架,而將一些步驟延遲到子類完成,使子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。避免重複**及增加可擴充套件性。如下的getpass方法就類似於集合類中的comparator排序一樣。

public abstract class logintemplate

public abstract string getpass(string user);

}

public class userlogin extends logintemplate

}

public class idlogin extends logintemplate

}

根據不同的情況選擇不同的實現。

組合

統一葉子物件與組合物件的訪問等操作方式。將物件的部分-整體層次結構的操作統一起來,使結構更簡單。簡單了客戶端的呼叫。是否jmx中的composite即是這種的體現??避免環狀引用。

composite c1 = new object();

composite c2 = new object();

c1.add(new object());

c2.add(c1);

多工 協程之生成器

1.生成器的概念 利用迭代器,我們可以在每次迭代獲取資料 通過next 方法 時按照特定的規律進行生成。但是我們在實現乙個迭代器時,關於當前迭代到的狀態需要我們自己記錄,進而才能根據當前狀態生成下乙個資料。為了達到記錄當前狀態,並配合next 函式進行迭代使用,我們可以採用更簡便的語法,即生成器 g...

設計模式 生成器模式

前兩個文章我介紹了工廠方法模式和抽象工廠模式,這次我來講一些生成器模式。生成器模式我也用的比較多。5個建立型模式裡面,我比較喜歡用工廠方法模式,生成器模式和單例模式。意圖將乙個複雜物件的構建與它的表示分開,使得同樣的構建過程可以建立不同的表示。結構圖 一眼看去是不是和抽象工廠模式有點像?是啊,我也覺...

設計模式 生成器模式

封裝乙個產品的構造過程,並允許按步驟構造 需要經過多個步驟建立的物件,如實際生活中的點餐流程,管理系統中的匯出框架等 此處以點餐流程為例 入口 package com.glt.designpattern.builder public class initmain 建造者類 package com.g...