当一个层次中的类都类似的实现一个方法,只是对象建立的步骤不一样时,能够建立调用Factory Method来处理实例化方法的惟一超类版本 java
(把子类的相似方法改为相同的而后提取到超类里面) ide
public class Bike { private Bike bike; public void dajiangyou(){ bike = new Bike(); System.out.println("骑自行车打酱油去"); } } public class Car { private Car car; public void dajiangyou(){ car = new Car(); System.out.println("开车打酱油去"); } }
重构后: spa
public class NewCar extends TransportFactory{ public NewCar(){ System.out.println("drive car"); } @Override protected TransportFactory create() { return new NewCar(); } } public class NewBike extends TransportFactory{ public NewBike(){ System.out.println("take bike"); } @Override protected TransportFactory create() { return new NewBike(); } } public abstract class TransportFactory { protected TransportFactory transport; protected abstract TransportFactory create(); public void dajiangyou(){ transport = create(); System.out.println("打酱油去"); } }
public static void main(String[] args) { TransportFactory t = new NewCar(); t.dajiangyou(); }
动机: code