版权声明:本文为博主原创文章,如果帮到你请点赞☺☺☺。 https://blog.csdn.net/qq_37902949/article/details/87931610
设计模式学习记录:一句话+代码体会设计模式。
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。
实现:
BaseEntity
/**
* <pre>
* 这个类是所有对象类的基类
* <per>
*/
public abstract class BaseEntity {
protected String version;
protected Date createTime;
protected Date updateTime;
}
Order
public class Order extends BaseEntity {
public Order() {
System.out.println("------实例化了Order对象-----");
}
}
Product
public class Product extends BaseEntity {
public Product() {
System.out.println("------Product Instance-----");
}
}
抽象工厂类
/**
* 所有对象工厂类的父类-抽象工厂类
* 使用BaseEntity接收,或者直接Object
*/
public abstract class AbstractBeanFactory {
public abstract BaseEntity createBean();
}
对象工厂例子OrderBeanFactory
/**
* <pre>
* 可以这样理解:使用工厂模式是为了让使用者仅仅需要去关心如何使用,不需要关心如何生产
* OCP(开闭原则):让其修改关闭,扩展开发
* </pre>
*/
public class OrderBeanFactory extends AbstractBeanFactory {
@Override
public BaseEntity createBean() {
return new Order();
}
}
对象工厂例子ProductBeanFactory
/**
* 创建产品对象的工厂
*/
public class ProductBeanFactory extends AbstractBeanFactory {
@Override
public BaseEntity createBean() {
return new Product();
}
}
创建对象过程演变
/**
* 创建对象方式演变:创建很多对象->使用对象工具类->简单工厂->工厂方法
*/
public class TestObject {
public static void main(String[] args) throws Exception {
// 创建很多对象
Order order = new Order();
Product prod = new Product();
System.out.println("----------对象工具类------------");
// 使用对象工具类创建对象的实例[反射降低性能]
Order r = BeanUtil.createBean(Order.class);
Product p = BeanUtil.createBean(Product.class);
System.out.println("-----------简单工厂--------------");
// 通过简单工厂创建对象[性能比较高]
SimpleFactory.createBean("order");
SimpleFactory.createBean("prod");
SimpleFactory.createBean("tree");
System.out.println("----------工厂方法设计模式----------");
// 工厂方法对象
AbstractBeanFactory factory = new ProductBeanFactory();
Product pro1 = (Product) factory.createBean();
System.out.println(pro1);
}
}
设计模式是软件开发人员在软件开发过程中面临一般问题的解决方案。
设计模式还是要慢慢体会。。