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

来源:互联网 发布:卖店铺淘宝客软件 编辑:程序博客网 时间:2024/05/01 14:48

简单工厂模式

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();}}


3 0
原创粉丝点击