移动端网站做排名,做网站一定要注册域名吗,标杆建设网站,网站建设流程 文档文章目录 工厂方法模式工厂方法模式的结构示例产品接口具体产品工厂接口具体工厂客户端代码 实际的使用 工厂方法模式
工厂方法模式的结构
产品#xff08;Product#xff09;#xff1a;定义工厂方法所创建的对象的接口。 具体产品#xff08;ConcreteProduct#xff0… 文章目录 工厂方法模式工厂方法模式的结构示例产品接口具体产品工厂接口具体工厂客户端代码 实际的使用 工厂方法模式
工厂方法模式的结构
产品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 ,可以考虑工厂方法。