設計模式之工廠模式 Factory實現
阿新 • • 發佈:2017-09-02
aps 引擎 rac sed urn lose pla logs rgs
simpleFactory
//car接口 public interface Car { void run(); } //兩個實現類 public class Audi implements Car{ public void run() { System.out.println("奧迪在跑"); } } public class Byd implements Car{ public void run() { System.out.println("Byd在跑"); } }Car接口以及兩個實現類
//第一種實現 public class CarFactory { public static Car createCar(String type){ if("奧迪".equals(type)){ return new Audi(); }else if("比亞迪".equals(type)){ return new Byd(); }else{ return null; } } } //第二種實現 public class CarFactory2 {工廠類實現public static Car createAudi(){ return new Audi(); } public static Car createByd(){ return new Byd(); } }
/** * 普通模式,無工廠模式 * @author benny * */ public class Client01 { public static void main(String[] args) { Car c1 = new Audi(); Car c2調用= new Byd(); c1.run(); c2.run(); } } /** * 簡單工廠模式 * @author benny * */ public class Client02 { public static void main(String[] args) { Car c1 = CarFactory.createCar("奧迪"); Car c2 = CarFactory.createCar("比亞迪"); c1.run(); c2.run(); } }
factoryMethod
public interface Car { void run(); } public class Audi implements Car{ public void run() { System.out.println("奧迪在跑"); } } public class Benz implements Car{ public void run() { System.out.println("奔馳在跑"); } } public class Byd implements Car{ public void run() { System.out.println("Byd在跑"); } }car接口及其實現
public interface CarFactory { Car createCar(); } public class AudiFactory implements CarFactory { @Override public Car createCar() { return new Audi(); } } public class BenzFactory implements CarFactory { @Override public Car createCar() { return new Benz(); } } public class BydFactory implements CarFactory { @Override public Car createCar() { return new Byd(); } }工廠接口及其實現
/** * 最大的好處實現了開閉原則 * @author benny * */ public class Client { public static void main(String[] args) { Car c1 = new AudiFactory().createCar(); Car c2 = new BydFactory().createCar(); Car c3 = new BenzFactory().createCar(); c1.run(); c2.run(); c3.run(); } }調用
abstractFactory
public interface Engine { void run(); void start(); } class LuxuryEngine implements Engine{ @Override public void run() { System.out.println("轉得快"); } @Override public void start() { System.out.println("啟動快,可以自動啟停"); } } class LowEngine implements Engine{ @Override public void run() { System.out.println("轉得慢"); } @Override public void start() { System.out.println("啟動慢,不可以自動啟停"); } }引擎接口及其實現
public interface Tyre { void revolve(); } class LuxuryTyre implements Tyre{ @Override public void revolve() { System.out.println("旋轉不磨損"); } } class LowTyre implements Tyre{ @Override public void revolve() { System.out.println("磨損快"); } }輪胎接口及其實現
public interface Seat { void massage(); } class LuxurySeat implements Seat{ @Override public void massage() { System.out.println("可以按摩"); } } class LowSeat implements Seat{ @Override public void massage() { System.out.println("不能按摩"); } }座椅接口及其實現
public interface CarFactory { Engine createEngine(); Seat createSeat(); Tyre createTyre(); } public class LowCarFactory implements CarFactory{ @Override public Engine createEngine() { return new LowEngine(); } @Override public Seat createSeat() { return new LowSeat(); } @Override public Tyre createTyre() { return new LowTyre(); } } public class LuxuryCarFactory implements CarFactory{ @Override public Engine createEngine() { return new LuxuryEngine(); } @Override public Seat createSeat() { return new LuxurySeat(); } @Override public Tyre createTyre() { return new LuxuryTyre(); } }工廠接口及其實現
public class Client { public static void main(String[] args) { CarFactory factory = new LuxuryCarFactory(); Engine e =factory.createEngine(); e.run(); e.start(); } }調用
設計模式之工廠模式 Factory實現