設計模式 工廠模式 Java Kotlin

2021-09-24 01:42:08 字數 2404 閱讀 5720

同演算法與資料結構一樣,設計模式同樣是作為乙個優秀程式設計師必須熟練掌握與應用的基本功,在閱讀原始碼或者優秀的開源專案的同時,不難發現各種設計模式的靈活運用,嘆為觀止。

接下來一系列部落格,將和大家一起分享這些常用的設計模式。

觀察者模式

裝飾者模式

工廠模式

單例模式

建造者模式​​​​​​​

本篇部落格旨在和大家一起分享工廠模式的應用,這裡的工廠模式指的是普通工廠模式,不是簡單工廠與抽象工廠,簡單工廠嚴格意義上來說,並不是一種設計模式,只是一種寫法,而抽象工廠將會在後面的部落格中進行分享。

首先來看看神馬是工廠模式,工廠模式定義了乙個建立物件時的介面,但由子類決定要例項化的類是哪乙個,工廠方法讓類把例項化推遲到了子類。

在設計工廠的時候,可以這樣理解,把工廠類和產品類作為平行的兩個模組來進行設計,這樣結構會更加清晰,也方便大家的理解,當然這裡說文字還是有點抽象,接下來通過**來具體體會一下。

我們這裡實現乙個手機工廠,可以生產huawei mate20、galaxy s10、iphonex、iphonexr四種手機。

首先我們來設計產品類

第一步先定義抽象的手機類,phone有兩個成員變數,os代表作業系統,name代表手機名稱,成員方法product進行生產

public abstract class phone 

public void setname(string name)

public void setos(string os)

}

接著根據android和ios宣告兩個抽象類作為作業系統的基類

public abstract class androidphone extends phone 

}public abstract class iphone extends phone

}

接著便是這四部手機的具體實現類了

public class galaxys10 extends androidphone 

}public class huaweimate20 extends androidphone

}public class iphonex extends iphone

}public class iphonexr extends iphone

}

至此,我們的產品類就設計完了

現在開始設計工廠類,工廠類持有乙個createphone的方法用來建立手機

public abstract class phonefactory
android和ios有著不同的實現

public class androidphonefactory extends phonefactory  else if (name.equals("galaxy s10")) 

return null;

}}

public class iphonefactory extends phonefactory  else if (name.equals("iphone xr")) 

return null;

}}

這樣工廠類也設計完了,android工廠和ios工廠依賴於封裝了如何具體實現的手機類,以此實現了工廠類對產品類的建立。

public class phonestore 

}

此時乙個簡單的完整的工廠模式demo就完成啦,下面是kotlin**實現

open class androidphone : phone() 

}class androidphonefactory : phonefactory() else if (name == "galaxy s10")

return null

}}class galaxys10 : androidphone()

}class huaweimate20 : androidphone()

}open abstract class iphone : phone()

}class iphonefactory : phonefactory() else if (name == "iphone xr")

return null

}}class iphonex : iphone()

}class iphonexr : iphone()

}abstract class phone

fun setname(name: string)

fun setos(os: string)

}abstract class phonefactory

fun main()

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...

設計模式 工廠設計模式

用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...

設計模式 工廠設計模式

工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...