工厂方法模式
工厂方法模式的结构
产品(Product):定义工厂方法所创建的对象的接口。
具体产品(ConcreteProduct):实现产品接口的具体类。
工厂(Creator):声明工厂方法,返回一个产品对象。
具体工厂(ConcreteCreator):实现工厂方法,返回具体产品实例。
示例
产品接口
// 披萨接口
public interface Pizza {
void prepare();
void bake();
void cut();
void box();
}
具体产品
// 意大利披萨
public class ItalianPizza implements Pizza {
public void prepare() {
System.out.println("Preparing Italian Pizza");
}
public void bake() {
System.out.println("Baking Italian Pizza");
}
public void cut() {
System.out.println("Cutting Italian Pizza");
}
public void box() {
System.out.println("Boxing Italian Pizza");
}
}
// 美国披萨
public class AmericanPizza implements Pizza {
public void prepare() {
System.out.println("Preparing American Pizza");
}
public void bake() {
System.out.println("Baking American Pizza");
}
public void cut() {
System.out.println("Cutting American Pizza");
}
public void box() {
System.out.println("Boxing American Pizza");
}
}
工厂接口
// 披萨工厂接口
public abstract class PizzaFactory {
public abstract Pizza createPizza();
public void orderPizza() {
Pizza pizza = createPizza();
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
}
}
具体工厂
// 意大利披萨工厂
public class ItalianPizzaFactory extends PizzaFactory {
public Pizza createPizza() {
return new ItalianPizza();
}
}
// 美国披萨工厂
public class AmericanPizzaFactory extends PizzaFactory {
public Pizza createPizza() {
return new AmericanPizza();
}
}
客户端代码
public class PizzaStore {
public static void main(String[] args) {
PizzaFactory italianFactory = new ItalianPizzaFactory();
PizzaFactory americanFactory = new AmericanPizzaFactory();
italianFactory.orderPizza(); // 订购意大利披萨
americanFactory.orderPizza(); // 订购美国披萨
}
}
实际的使用
产品 具体的产品,工厂 具体的工厂
比如数据库驱动。对数据库的操作基本都是一致的。但是数据库的产品是不一样的,mysql oracle ,可以考虑工厂方法。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 【设计模式】【创建型5-2】【工厂方法模式】
发表评论 取消回复