设计模式之——简单工厂模式(二)

简单工厂模式

定义:简单的工厂模式属于创建型模式,又被称为静态工厂方法模式。

  • Factory:工厂类,这是简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
  • IProduct:抽象产品类,创建所有对象的父类,它复制描述所有实例所共有的公共接口。
  • Product:具体产品类,创建具体的实例对象。

  1. 抽象产品类
    创建一个计算机抽象产品类,代码如下:
public abstract class Computer {
    
    
    /**
     * 产品的抽象方法,
     */
    public abstract void start();

}
  1. 具体产品类
    具体的计算机产品分别是联想,惠普和华硕计算机:
public class HpComputer extends Computer {
    
    
    @Override
    public void start() {
        System.out.println("HpComputer.start 惠普电脑");
    }
}

public class LenovoComputer extends Computer {
    
    
    @Override
    public void start() {
        System.out.println("LenovoComputer.start 联想电脑");
    }
}

public class AsusComputer extends Computer {
    
    
    @Override
    public void start() {
        System.out.println("AsusComputer.start 华硕电脑");
    }
}
  1. 工厂类
    工厂类提供了一个静态方法 createComputer用来生产计算机。我们只需要传入自己想生产的计算机的品牌,它就会实例化相应品牌的计算机对象。
public class Computerfactory {


    public static Computer createComputer(String type) {
        Computer computer = null;
        switch (type) {
            case "hp":
                computer = new HpComputer();
                break;
            case "asus":
                computer = new AsusComputer();
                break;
            case "leovo":
                computer = new LenovoComputer();
                break;
            default:
                break;
        }
        return computer;
    }

    public static void main(String[] args) {

        Computerfactory computerfactory = new Computerfactory();

        Computerfactory.createComputer("hp").start();
        Computerfactory.createComputer("leovo").start();
        Computerfactory.createComputer("asus").start();
    }

}

简单工厂模式的场景和优缺点

  • 使用场景:

    • 工厂类负责创建的对象较少。
    • 客户只用知道传入工厂的参数,并不需要关心创建对象的逻辑。
  • 优点:使用户根据参数获得对应的类实例,避免了直接实例化类,降低了耦合性。

  • 缺点:可实例化的类型在编译期间已经被确定。如果增加新类型,则需要修改工厂,这违背了开放封闭原则。简单工厂需要知道所有要生成的类型,当子类过多或者子类层次过多时不适合使用。

猜你喜欢

转载自blog.csdn.net/u013290250/article/details/82347774