您的位置:首页 > 编程语言 > Java开发

Java设计模式(三):工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)

2016-05-23 17:39 771 查看
简单工厂模式

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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: