简单工厂模式
package com.iter.devbox.factory.simplefactory;
public interface Car {
public void run();
}
package com.iter.devbox.factory.simplefactory;
public class Audi implements Car {
public void run() {
System.out.println("奥迪在跑");
}
}
package com.iter.devbox.factory.simplefactory;
public class Byd implements Car {
public void run() {
System.out.println("比亚迪在跑");
}
}
package com.iter.devbox.factory.simplefactory;
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 static Car createAudi() {
return new Audi();
}
public static Car createByd() {
return new Byd();
}
}
package com.iter.devbox.factory.simplefactory;
public class Client {
public static void main(String[] args) {
Car audi = CarFactory.createCar("奥迪");
audi.run();
Car byd = CarFactory.createByd();
byd.run();
}
}
工厂方法模式
package com.iter.devbox.factory.factorymethod;
public interface Car {
public void run();
}
package com.iter.devbox.factory.factorymethod;
public class Audi implements Car {
public void run() {
System.out.println("奥迪在跑");
}
}
package com.iter.devbox.factory.factorymethod;
public class Byd implements Car {
public void run() {
System.out.println("比亚迪在跑");
}
}
package com.iter.devbox.factory.factorymethod;
public class Benz implements Car {
public void run() {
System.out.println("奔驰在跑");
}
}
package com.iter.devbox.factory.factorymethod;
public interface CarFactory {
public Car createCar();
}
package com.iter.devbox.factory.factorymethod;
public class AudiFactory implements CarFactory {
public Car createCar() {
return new Audi();
}
}
package com.iter.devbox.factory.factorymethod;
public class BydFactory implements CarFactory {
public Car createCar() {
return new Byd();
}
}
package com.iter.devbox.factory.factorymethod;
public class BenzFactory implements CarFactory {
public Car createCar() {
return new Benz();
}
}
package com.iter.devbox.factory.factorymethod;
public class Client {
public static void main(String[] args) {
Car audi = new AudiFactory().createCar();
audi.run();
Car byd = new BydFactory().createCar();
byd.run();
Car benz = new BenzFactory().createCar(); // 新增加的产品
benz.run();
}
}
抽象工厂模式
package com.iter.devbox.factory.abstractfactory;
public interface Engine {
void run();
void start();
}
class LuxuryEngine implements Engine {
public void run() {
System.out.println("Engine 转得快");
}
public void start() {
System.out.println("Engine 启动快!可以自动启停!");
}
}
class LowEngine implements Engine {
public void run() {
System.out.println("Engine 转得慢");
}
public void start() {
System.out.println("Engine 启动慢!不能自动启停!");
}
}
package com.iter.devbox.factory.abstractfactory;
public interface Seat {
void massage();
}
class LuxurySeat implements Seat {
public void massage() {
System.out.println("Seat 可以自动按摩!");
}
}
class LowSeat implements Seat {
public void massage() {
System.out.println("Seat 不能按摩!");
}
}
package com.iter.devbox.factory.abstractfactory;
public interface Tyre {
void revolve();
}
class LuxuryTyre implements Tyre {
public void revolve() {
System.out.println("Tyre 旋转不磨损");
}
}
class LowTyre implements Tyre {
public void revolve() {
System.out.println("Tyre 旋转磨损快");
}
}
package com.iter.devbox.factory.abstractfactory;
public interface CarFactory {
Engine createEngine();
Seat createSeat();
Tyre createTyre();
}
package com.iter.devbox.factory.abstractfactory;
public class LuxuryCarFactory implements CarFactory {
public Engine createEngine() {
return new LuxuryEngine();
}
public Seat createSeat() {
return new LuxurySeat();
}
public Tyre createTyre() {
return new LuxuryTyre();
}
}
package com.iter.devbox.factory.abstractfactory;
public class LowCarFactory implements CarFactory {
public Engine createEngine() {
return new LowEngine();
}
public Seat createSeat() {
return new LowSeat();
}
public Tyre createTyre() {
return new LowTyre();
}
}
package com.iter.devbox.factory.abstractfactory;
public class Client {
public static void main(String[] args) {
CarFactory factory = new LuxuryCarFactory();
Engine engine = factory.createEngine();
engine.run();
engine.start();
Seat seat = factory.createSeat();
seat.massage();
Tyre tyre = factory.createTyre();
tyre.revolve();
}
}