设计模式之——工厂模式(三)

工厂模式(三)

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

  • 抽象产品类
  • 具体产品类
  • 抽象工厂类

1.抽象工厂类

public abstract class Computerfactorys {

    public abstract <T extends Computer> T createComputer(Class<T> clz);

}

2.具体工厂类

public class GDComputerfactory extends Computerfactorys {
    
    

    @Override
    public <T extends Computer> T createComputer(Class<T> clz) {
        Computer computer = null;
        String classname = clz.getName();
        try {
        //通过反射来生产不同厂家的电脑
            computer = (Computer) Class.forName(classname).newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return (T) computer;
    }
}

3.抽象产品类与具体产品类
这两个类与简单工厂模式是一样的。

4.简单的使用

public class Client {
    public static void main(String[] args) {

        Computerfactorys computerfactory = new GDComputerfactory();
        LenovoComputer lenovoComputer = computerfactory.createComputer(LenovoComputer.class);
        lenovoComputer.start();
    }
}

总结

  • 简单工厂模式:在工厂类包含了必要的逻辑判断,根据不同的条件来动态实例化相关的类。这去除了与具体产品的依赖;但与此同时也会带来一个问题;如果我们需要新增加一个产品时,就需要在工厂类中添加一个case判断,进行实例该类,这违背的开放封闭的原则,对修改也开放了。工厂模式就没有违背该原则。并不需要修改工厂类,直接创建产品即可。

猜你喜欢

转载自blog.csdn.net/u013290250/article/details/82384425
今日推荐