废话不多说, 直接上代码
先建立一个产品类的统一接口, 以及一个工厂类的总接口, 用来生产产品
/**
* 产品类的总接口
* @author xsh
* @time 2018年7月11日
*/
public interface Product {
void production();
}
/**
* 所有产品工厂类的总接口
* @author xsh
* @time 2018年7月11日
*/
public interface ProductFactory {
Product getProduct();
}
接下来, 所有的产品和工厂都从这两个接口中导出,
先创建Book类, 以及BookFactory
/**
* 具体的产品类,书
* @author xsh
* @time 2018年7月11日
*/
public class Book implements Product {
@Override
public void production() {
System.out.println("生产了一本书");
}
}
/**
* Book类的工厂类
* @author xsh
* @time 2018年7月11日
*/
public class BookFactory implements ProductFactory {
private static Book book = new Book();
@Override
public Product getProduct() {
//这里写逻辑代码
//这里我写一个简单的单例
return book;
}
}
最后, 开始生产
public class Run {
public static void main(String[] args) {
//方法验证
ProductFactory factory = new BookFactory();
Product product = factory.getProduct();
product.production();
}
}
所有的对象都使用接口引用, 方便扩展, 当需要增加产品时, 只需要新增一个产品类以及一个工厂类
/**
* 新增产品
* @author xsh
* @time 2018年7月11日
*/
public class Pen implements Product {
@Override
public void production() {
System.out.println("生产了一支笔");
}
}
/**
* 新增产品工厂
* @author xiongsihang
* @time 2018年7月11日
*/
public class PenFactory implements ProductFactory {
@Override
public Product getProduct() {
Pen pen = new Pen();
return pen;
}
}
这时验证方法只需要更改一行代码
public class Run {
public static void main(String[] args) {
//方法验证
//ProductFactory factory = new BookFactory();
ProductFactory factory = new PenFactory();
Product product = factory.getProduct();
product.production();
}
}