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(); } }
相关文章推荐
- Java中JDK安装以及环境变量设置
- myeclipse maven 安装
- 基于MVC模式的应用框架之struts
- Java Blob类型和String类型相互转换
- Java的keytool命令都有哪些用途?
- Java类型后面的3个点的含义
- Java中Vector ArrayList LinkedList之间的区别与联系
- Java 三目运算符
- java输出所有的字符编码
- eclipse配色方案 darktheme+Sublime Text2
- springMvc REST 请求和响应
- Java程序性能优化总结
- Java synchronized详解
- JAVA基础第十组(5道题)
- JAVA基础第九组(5道题)
- JAVA基础第八组(5道题)
- JAVA基础第七组(5道题)
- JAVA基础第六组(5道题)
- Java_类的热替换
- Java之Semaphore