103工厂模式

53 阅读1分钟

定义

定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使得类的实例化延迟到其子类。

  • 抽象产品角色(Product):定义产品的接口
  • --具体产品角色(ConcreteProduct) :实现接口Product的具体产品类
  • 抽象工厂角色(Creator) :声明工厂方法(FactoryMethod),返回一个产品
  • --真实的工厂(ConcreteCreator):实现FactoryMethod工厂方法,由客户调用,返回一个产品的实例。

或者说:新增一个产品都必须要新增一个与其相对应的工厂类,即每一个具体工厂都负责生产一种对应的产品(产品继承了同一抽象类或者接口)。

和简单工厂模式相比,工厂模式是将产品的创建下沉到其子类。

类图

图片1.png

代码

public class FactoryPattern {
    public static void main(String[] args) {
        Factory factory = new HuaWeiFactory();
        Phone phone = factory.createPhone();
        phone.print();
    }
}
interface Phone { void print();}
class iPhone implements Phone {
    @Override
    public void print() {
        System.out.println("com.mxy.dp.iPhone");
    }
}
class HuaWeiPhone implements Phone {
    @Override
    public void print() {
        System.out.println("com.mxy.dp.HuaWeiPhone");
    }
}
interface Factory { Phone createPhone();}
class IPhoneFactory implements Factory {
    @Override
    public Phone createPhone() {
        return new iPhone();
    }
}
class HuaWeiFactory implements Factory {
    @Override
    public Phone createPhone() {
        return new HuaWeiPhone();
    }
}

场景

JDK中的collection

图片4.png

Collection接口

定义了iterator ()方法

Iterator 接口

定义了返回的对象