作用:屏蔽了创建对象的具体步骤,通过“工厂类”来对特定对象进行生产,达到了创建和使用对象的分离。
组成:抽象产品类,实现类,工厂类
基础产品类(抽象产品类),用于之后实现“父类引用指向子类实现”,由具体的实现类去完成抽象方法。这里用抽象类或者接口类都可以,只要能满足“父类引用指向子类实现”。
实现类1.
实现类2
工厂类。根据不同的输入,来返回不同的BaseProduct类。虽然统一了返回类型是基础抽象类,但是具体实现是子类,也就是实现类。既统一了返回结果的类型,也将子类具体实现方法的调用完成了。这里的dealFruit方法,也可以作为static方法存在。
结合下面两张图片可以看到,我们通过给工厂类不同的入参输入,虽然得到的都是Baseproduct类型的对象,但是我们在对其方法进行调用时,也实现了方法的不同。