设计模式: http://zh.wikipedia.org/wiki/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F_(%E8%AE%A1%E7%AE%97%E6%9C%BA)
工厂方法模式:http://zh.wikipedia.org/wiki/%E5%B7%A5%E5%8E%82%E6%96%B9%E6%B3%95%E6%A8%A1%E5%BC%8F

//几个Button类
abstract class Button{
public abstract void showInfo();
}
class WinButton extends Button{
public void showInfo() {
System.out.println("this is a WinButton");
}
}
class MacButton extends Button{
public void showInfo() {
System.out.println("this is a MacButton");
}
}
//它们的工厂类
interface ButtonFactory{
abstract Button createButton();
}
class WinButtonFactory implements ButtonFactory{
public Button createButton(){
return new WinButton();
}
}
class MacButtonFactory implements ButtonFactory{
public Button createButton(){
//如果需要复用部分创建代码,WinButtonFactory需要定义为抽象类,并实现复用创建代码。
return new MacButton();
}
}
// Client
public class FactoryExample{
public static void main(String args[]){
ButtonFactory bf1 = new WinButtonFactory();
Button btn1 = bf1.createButton();
btn1.showInfo();
ButtonFactory bf2 = new MacButtonFactory();
Button btn2 = bf2.createButton();
btn2.showInfo();
}
}
下列情况可以考虑使用工厂方法模式:
- 创建对象需要大量重复的代码。
- 创建对象需要访问某些信息,而这些信息不应该包含在复合类中。
- 创建对象的生命周期必须集中管理,以保证在整个程序中具有一致的行为。
Q:createButton放在各自的工厂类(WinButtonFactory、MacButtonFactory)有什么好处?A:1)隔离创建过程 2)重复代码可在创建工厂中复用 3)延迟创建Q:工厂方法模式的缺陷?A:需要预先定义各个子类的创建方法。
本文通过一个具体的示例详细介绍了工厂方法模式的应用场景及其优势。包括如何通过工厂类隔离创建过程,减少重复代码,并延迟对象的创建。同时也探讨了该模式的一些潜在缺点。

被折叠的 条评论
为什么被折叠?



