設計模式 工廠模式

2021-08-22 04:43:21 字數 1852 閱讀 5820

專門負責例項化有大量公共介面的類。工廠模式可以動態決定將哪乙個類例項化,而不必事先知道每次要例項化哪乙個類。客戶類和工廠類是分開的。消費者無論什麼時候需要某種剷平,需要做的只是向工廠提出請求即可。消費者無需修改就可以接納新產品。當然也存在缺點,就是當產品修改時,工廠類也要做相應的修改。

普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。

多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。

靜態工廠方法模式,將上面的多個工廠方法模式裡的方法置為靜態的,不需要建立例項,直接呼叫即可。

工廠方法模式有乙個問題就是,類的建立依賴工廠類,也就是說,如果想要拓展程式,必須對工廠類進行修改,這違背了閉包原則,所以,從設計角度考慮,有一定的問題,如何解決?就用到抽象工廠模式,建立多個工廠類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的**。

建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。

package jbdesignpattern;

//普通工廠模式

inte***ce sender

//實現同一介面的類

class mailsender implements sender

}class smssender implements sender

}class sendfactory else if ("sms".equals(type)) else }}

public class factorytest

}

對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。

package jbdesignpattern;

/** * 多個工廠方法模式

* 提供多個工廠方法,分別建立物件

* @author dan

* */

class muiltsendfactory

public sender producesms()

}public class muiltfactorytest

}

將上面的多個工廠方法模式裡的方法置為靜態的,不需要建立例項,直接呼叫即可。

package jbdesignpattern;

/** * 靜態工廠方法模式

* 將多個工廠方法模式裡的方法置為靜態的,不需要建立例項,直接呼叫即可。

* @author dan

* */

class staticsendfactory

public static sender producesms()

}public class staticfactorytest

}

建立多個工廠類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的**。

package jbdesignpattern;

/** * 抽象工廠模式

* 建立多個工廠類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的**。

* @author dan

* */

inte***ce provider

class sendsmsfactory implements provider

}class sendmailfactory implements provider

}public class abstrctfactorytest

}

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

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

設計模式 工廠設計模式

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

設計模式 工廠設計模式

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