定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,共方法使一个类的实例化延迟到子类
工厂模式他的关键是:将创建对象和使用对象分开
/** * 声明产品接口 */ public interface ICar{ public void productMethod(); } /** * 产品实现类 */ public class BenChi implements ICar{ private String 发动机 ; private String 轮胎 ; public BenChi(String 发动机, String 轮胎){ this.发动机 = 发动机; this.轮胎 = 轮胎; } @Override public void productMethod() { System.err.println(发动机+ 轮胎); } } /** * 工厂接口 */ public interface IFactory{ public ICar createBenChi(); } /** * 工厂实现类 */ public class Factory implements IFactory{ @Override public ICar createBenChi() { String 发动机 = "奔驰发动机"; String 轮胎 = "奔驰轮子"; ICar benchi = new BenChi(发动机, 轮胎); return benchi; } }
工厂模式根据抽象程度的不同分为三种:简单工厂模式(也叫静态工厂模式)、本文所讲述的工厂方法模式、以及抽象工厂模式
作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过new就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。
简单工厂:当一个类有多个构造器,因为构造器名称都相同,可以用静态工厂方法来区分