工厂方法

工厂方法模式:

模式定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod 使得一个类的实例化延迟到子类
package com.vn.factory;

/**
 * @author VN
 */
public abstract class BeanFacory {

    /**
     * 工厂方法
     */
    public abstract Product createProduct();

    public Product getObject() {
    Product product = createProduct();
        // TODO: 具体逻辑代码
        return product;
    }

}
package com.vn.factory.impl;

import com.vn.factory.BeanFacory;
import com.vn.factory.Product;

/**
 * @author VN
 */
public class UrlBeanFactory extends BeanFacory {


    @Override
    public Product createProduct() {
        // TODO: 逻辑代码
        return new UrlProduct();
    }
}
package com.vn.factory.impl;

import com.vn.factory.Product;
import lombok.extern.slf4j.Slf4j;

/**
 * @author VN
 */
@Slf4j
public class UrlProduct implements Product {
  @Override
  public void print() {
    log.info("UrlProduct-print");
  }
}
package com.vn.factory;

/**
 * @author VN
 */
public interface Product {

    /**
     * 打印
     */
    void print();

}
package com.vn;

import com.vn.factory.BeanFacory;
import com.vn.factory.Product;
import com.vn.factory.impl.UrlBeanFactory;
import com.vn.single.*;
import org.junit.jupiter.api.Test;

import java.io.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class FactoryTest {

  /** 测试---工厂模式 */
  @Test
  public void factoryTest() {

    BeanFacory factory = new UrlBeanFactory();
    Product product = factory.getObject();
    product.print();
  }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

简单工厂
posted @ 2022-05-28 12:13  VNone  阅读(41)  评论(0)    收藏  举报