天天看點

Java 之 23 種設計模式解析——建立模式、簡單工廠模式三、Java 的 23 中設計模式概述、六大原則一、建立模式二、結構模式(7種)三、關系模式(11種)

三、Java 的 23 中設計模式

A、建立模式

從這一塊開始,我們詳細介紹 Java 中 23 種設計模式的概念,應用場景等情況,并結合他們的特點及設計模式的原則進行分析。

首先,簡單工廠模式不屬于 23 中涉及模式,簡單工廠一般分為:普通簡單工廠、多方法簡單工廠、靜态方法簡單工廠。

0、簡單工廠模式

簡單工廠模式模式分為三種:

01、普通

就是建立一個工廠類,對實作了同一接口的一些類進行執行個體的建立。首先看下關系圖:

Java 之 23 種設計模式解析——建立模式、簡單工廠模式三、Java 的 23 中設計模式概述、六大原則一、建立模式二、結構模式(7種)三、關系模式(11種)

舉例如下:(我們舉一個發送郵件和短信的例子) 首先,建立二者的共同接口:

[java] view plaincopy
1. public interface Sender {
2. public void Send();
3. }

其次,建立實作類:

[java] view plaincopy
1. public class MailSender implements Sender {
2. @Override
3. public void Send() {
4. System.out.println("this is mailsender!");
5. }
6. }
[java] view plaincopy
1. public class SmsSender implements Sender {
2.
3. @Override
4. public void Send() {
5. System.out.println("this is sms sender!");
6. }
7. }

最後,建工廠類:

[java] view plaincopy
1. public class SendFactory {
2.
3. public Sender produce(String type) {
4. if ("mail".equals(type)) {
5. return new MailSender();
6. } else if ("sms".equals(type)) {
7. return new SmsSender();
8. } else {
9. System.out.println("請輸入正确的類型!");
10. return null;
11. }
12. }
13. }

我們來測試下:

1. public class FactoryTest {
2.
3. public static void main(String[] args) {
4. SendFactory factory = new SendFactory();
5. Sender sender = factory.produce("sms");
6. sender.Send();
7. }
8. }

輸出:this is sms sender!

02、多個方法

是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字元串出錯,則不能正确建立對象, 而多個工廠方法模式是提供多個工廠方法,分别建立對象。關系圖:

Java 之 23 種設計模式解析——建立模式、簡單工廠模式三、Java 的 23 中設計模式概述、六大原則一、建立模式二、結構模式(7種)三、關系模式(11種)

将上面的代碼做下修改,改動下 SendFactory 類就行,如下:

測試類如下:

[java] view plaincopy
1. public class FactoryTest {
2.
3. public static void main(String[] args) {
4. SendFactory factory = new SendFactory();
5. Sender sender = factory.produceMail();
6. sender.Send();
7. }
8. }

輸出:this is mailsender!

03、多個靜态方法

将上面的多個工廠方法模式裡的方法置為靜态的,不需要建立執行個體,直接調用即可。

1. public class SendFactory {
2.
3. public static Sender produceMail(){
4. return new MailSender();
5. }
6.
7. public static Sender produceSms(){
8. return new SmsSender();
9. }
10. }
[java] view plaincopy
1. public class FactoryTest {
2.
3. public static void main(String[] args) {
4. Sender sender = SendFactory.produceMail();
5. sender.Send();
6. }
7. }

輸出:this is mailsender!

總體來說,工廠模式适合:凡是出現了大量的産品需要建立,并且具有共同的接口時,可以通過工廠方法模式進行建立。在以上的三種模式中,第一種如果傳入的字元串有誤,不能正确建立對象,第三種相對于第二種,不需要執行個體化工廠類,是以,大多數情況下,我們會選用第三種——靜态工廠方法模式。

目錄:(點選進入相應頁面)

概述、六大原則

一、建立模式

0、簡單工廠模式

1.工廠方法模式(Factory Method)

2、抽象工廠模式

3、單例模式(Singleton)

4、建造者模式(Builder)

5、原型模式(Prototype)

二、結構模式(7種)

6、擴充卡模式

7、裝飾模式(Decorator)

8、代理模式(Proxy)

9、外觀模式(Facade)

10、橋接模式(Bridge)

11、組合模式(Composite)

12、享元模式(Flyweight)

三、關系模式(11種)

13、政策模式(strategy)

14、模闆方法模式(Template Method)

15、觀察者模式(Observer)

16、疊代子模式(Iterator)

17、責任鍊模式(Chain of Responsibility)

18、指令模式(Command)

19、備忘錄模式(Memento

20、狀态模式(State)

21、通路者模式(Visitor)

22、中介者模式(Mediator)

23、解釋器模式(Interpreter)

繼續閱讀