1. 程式人生 > IOS開發 >Alamofire(一)-- 網路基礎TCP/IP協議簡述

Alamofire(一)-- 網路基礎TCP/IP協議簡述

1.簡介:

in the book Design Patterns. The template method is a method in a superclass,usually an abstract superclass,and defines the skeleton of an operation in terms of a number of high-level steps. These steps are themselves implemented by additional helper methods in the same class as the template method.( 在《設計模式》一書中。模板方法是超類(通常是抽象超類)中的方法,它根據許多高階步驟定義操作的框架。這些步驟本身由與模板方法相同的類中的其他輔助方法實現。 )

​ ——引用自維基百科

​ 這裡通俗的來講就是定義一個演演算法骨架,骨架中有特定方法(一般用final修飾,防止子類修改)和一般方法,一般方法用於給子類實現和擴充套件。

image

2.優點和缺點:

優點:

① 封裝不變部分,擴充套件可變部分;

② 提取公共程式碼,便於維護;

③ 行為由父類控制,子類實現。

**缺點:**每一個不同的實現都需要一個子類來實現,導致類的個數增加,使得系統更加龐大。

3.相關例項分析

購物場景:

​ 生活中我們都離不開購物,購物我們可能在網上也可能在實體店中購買,但大體可以分為以下幾個步驟:瀏覽商品、加購物車、結算商品價格。這裡我們可以把這個總體的步驟當做是一個抽象類,然後我們有這三個步驟,其中具體瀏覽了什麼商品,哪些加購了都可以在子類中實現,最後我們來結算。

​ 小明和小花去超市購物,小明想要去買水果,小花去買日用品。於是他們開始挑選相關的產品,最後將加購的商品到收銀臺結算。

/**
 * 超市總體購物流程
 */
abstract class GoToSuperMarket {

    // 瀏覽商品
    abstract void BrowseGoods();

    // 加入購物車
    abstract void addToCart();

    // 商品結算
    abstract void settlement();

    public final void shop() {
        BrowseGoods();
        addToCart();
        settlement();
    }
}

/**
 * 小明去超市買水果
 */
class XiaoMing extends GoToSuperMarket { @Override void BrowseGoods() { System.out.println("小明去超市找蘋果、橘子、香蕉。。。"); } @Override void addToCart() { System.out.println("小明挑選了5斤蘋果,加入購物車"); } @Override void settlement() { System.out.println("小明選完了,開始去收銀臺結算"); } } /** * 小花去超市買日用品 */ class XiaoHua extends GoToSuperMarket { @Override void BrowseGoods() { System.out.println("小花去超市找毛巾、毯子、牙刷。。。"); } @Override void addToCart() { System.out.println("小花挑選了毛巾和牙刷,加入購物車"); } @Override void settlement() { System.out.println("小花選完了,開始去收銀臺結算"); } } public class process { public static void main(String[] args) { GoToSuperMarket shopperOne = new XiaoMing(); shopperOne.shop(); System.out.println(); GoToSuperMarket shopperTwo = new XiaoHua(); shopperTwo.shop(); } } 複製程式碼
輸出結果:
小明去超市找蘋果、橘子、香蕉。。。
小明挑選了5斤蘋果,加入購物車
小明選完了,開始去收銀臺結算

小花去超市找毛巾、毯子、牙刷。。。
小花挑選了毛巾和牙刷,加入購物車
小花選完了,開始去收銀臺結算
複製程式碼

####4.總結 在日常開發中,我們不妨把公共重複利用的程式碼抽取出來,這樣既能顯得簡潔而又具有邏輯性。同時我們又可以擴充套件其它方法,使得類具有更多的功能。