工厂模式
什么是工厂模式?
实现创建者和调用者分离
简单工厂代码
简单工厂:是由一个工厂对象决定创建出哪一种产品类的实例。
缺点:我每次新加一个车型都需要去修改工厂。
1.先创建一个接口类
package designpatterns23.factorpattern.carfactory; /** * 工厂模式 * Created by lizhen on 2018/1/30. */ public interface Car { /** * 所有的汽车都有跑的功能 */ void run(); }2.创建两个不同的车型实现car的run方法
package designpatterns23.factorpattern.carfactory; /** * 奥迪车型 * Created by lizhen on 2018/1/30. */ public class AoDi implements Car{ @Override public void run() { System.out.println("我是奥迪车,我在嗖嗖的跑...."); } }
package designpatterns23.factorpattern.carfactory; /** * 奔驰车型 * Created by lizhen on 2018/1/30. */ public class BenChi implements Car{ @Override public void run() { System.out.println("我是奔驰车,我要呼呼的跑......"); } }3.创建汽车的工厂
package designpatterns23.factorpattern.carfactory; /** * 汽车工厂 * Created by lizhen on 2018/1/30. */ public class CarFactory { private static Car car; public static Car createCar(String name){ if (name.equals("奥迪")){ car = new AoDi(); }else if (name.equals("奔驰")){ car =new BenChi(); } return car; } }4.查看效果
package designpatterns23.factorpattern.carfactory; /** * 工厂模式测试 * Created by lizhen on 2018/1/30. */ public class CarTest { public static void main(String[] args) { Car car = CarFactory.createCar("奥迪"); Car car1 = CarFactory.createCar("奔驰"); car.run(); car1.run(); } }
工厂方法
1.先创建一个接口类
package designpatterns23.factorpattern.carfactory; /** * 工厂模式 * Created by lizhen on 2018/1/30. */ public interface Car { /** * 所有的汽车都有跑的功能 */ void run(); }2.创建两个不同的车型实现car的run方法
package designpatterns23.factorpattern.carfactory; /** * 奥迪车型 * Created by lizhen on 2018/1/30. */ public class AoDi implements Car{ @Override public void run() { System.out.println("我是奥迪车,我在嗖嗖的跑...."); } }
package designpatterns23.factorpattern.carfactory; /** * 奔驰车型 * Created by lizhen on 2018/1/30. */ public class BenChi implements Car{ @Override public void run() { System.out.println("我是奔驰车,我要呼呼的跑......"); } }
3.分别创建奥迪与奔驰的工厂
package designpatterns23.factorpattern.carfactory2; /** * 奥迪工厂 * Created by lizhen on 2018/1/30. */ public class AODiFactory { public static Car createAoDi(){ return new AoDi(); } }
package designpatterns23.factorpattern.carfactory2; /** * 奔驰工厂 * Created by lizhen on 2018/1/30. */ public class BenChiFactory { public static Car createBenChi(){ return new BenChi(); } }4.测试查看效果