设计模式之 factory
工厂模式定义:提供创建对象的接口
uml类图
为什么使用?
因为工厂模式就相当于创建实例对象的new,我们经常根据类class生成实例对象,比如 A a=new A();工厂模式也是用来创建实例对象的,以后new的时候可以考虑使用工厂模式,这么做可能多做一些工作,但会给你的系统带来更大的扩展性和尽量少的修改量。
优势:使用工厂模式可以对父类抽象一个接口,采用面向接口编程
- 当我们对对象实例化之前做点初始化工作,比如赋值,查询数据库。
- 当子类继承父类需要对以前的代码进行修改时,需要对子类一个一个进行实例化。
工厂方法
使用工厂方法注意几个角色,首先定义产品接口,如Product,产品接口下有Product的实现类,如ProductA,其次是一个factory类,用来生成产品。
//产品接口
public interface Product{
...
}
//实现类A
class ProductA implements Product{
...
}
//实现类B
class ProductB implements Product{
...
}
//工厂用来生产产品
public class Factory{
public void Product create(int type){
if(type==1){
return new ProductA();
}else if(type==2){
return new ProductB();
}
}
}
抽象工厂
public interface AbstractFactory{
//生产派
public Pie createPie();
//生产果汁
public Juice createJuice();
}
public class AppleFactory implements AbstractFactory{
public Pie createPie(){
return new ApplePie();
}
public Juice createJuice(){
return new AppleJuice();
}
}
public class OrangeFactory implements AbstractFactory{
public Pie createPie(){
return new OrangePie();
}
public Juice createJuice(){
return new OrangeJuice();
}
}
//抽象产品
public interface Pie(){
void work();
}
//具体产品
public ApplePie implements Pie{
void work(){
}
}
public OrangePie implements Pie{
void work(){
}
}
public interface Juice{
void work();
}
public AppleJuice implements Juice{
void work(){
}
}
public OrangeJuice implements Juice{
void work(){
}
}