工厂模式
本质
- 实例化对象,用工厂方法代替new操作
- 将选择实现类,创建对象同意管理和控制,从而将调用者跟我们的实现类解耦
实现创建者和调用者的分离三种工厂方式
- 简单工厂模式:用来生产同一等级结构中的任意产品,对于增加的新产品,需要修改已有代码
- 工厂方法模式:用来生产同一等级结构中的固定产品,支持增加任意产品
- 抽象工厂模式:用来生产不同产品族的全部产品,对于增加新的产品,无能为力,支持增加产品族
1.简单工厂模式
公用代码
public interface Car { void run(); } public class Audi implements Car { @Override public void run() { System.out.println("奥迪在跑"); } } public class Byd implements Car { @Override public void run() { System.out.println("比亚迪在跑"); } }
生产汽车代码示例
public class CarFactory { public static Car createCar(String type){ if(type.equals("奥迪")){ return new Audi(); }else if (type.equals("比亚迪")){ return new Byd(); }else if(type.equals("宝马")){ return null; }else { return null; } } //或者下面的创建方式 public static Car createAudi(){ return new Audi(); } public static Car createByd(){ return new Byd(); } } public class Client { public static void main(String[] args){ Car audi = CarFactory.createCar("奥迪");//CarFactory.createAudi(); Car byd = CarFactory.createCar("比亚迪");//CarFactory.createByd(); audi.run(); byd.run(); } }
2.工厂方法模式
public interface CarFactory { Car crateCar(); } public class BydFactory implements CarFactory { @Override public Car crateCar() { return new Byd(); } } public class AudiFactory implements CarFactory { @Override public Car crateCar() { return new Audi(); } } public class Client { public static void main(String[] args){ Car audi = new AudiFactory().crateCar(); Car byd = new BydFactory().crateCar(); } }
抽象工厂模式
抽象工厂模式是工厂方法模式的升级版本,在有很多个业务品种,业务分类是,通过抽象工厂模式生产需要的对象是一种非常好的解决方式
发动机引擎类
public interface Engine { void run(); void start(); } class LuxuryEngin implements Engine{ @Override public void run() { System.out.println("发动机跑的快"); } @Override public void start() { System.out.println("发动机启动的快"); } } class LowEngin implements Engine{ @Override public void run() { System.out.println("发动机跑的慢"); } @Override public void start() { System.out.println("发动机启动的慢"); } }
座位类
public interface Seat { public void message(); } class LuxurySeat implements Seat{ @Override public void message() { System.out.println("可自动按摩"); } } class LowSeat implements Seat{ @Override public void message() { System.out.println("不可自动按摩"); } }
轮胎类代码
public interface Tyre { public void resolve(); } class LuxuryTyre implements Tyre{ @Override public void resolve() { System.out.println("转动不磨损"); } } class LowTyre implements Tyre{ @Override public void resolve() { System.out.println("转动磨损"); } }
应用场景
JDK中Calendar的getInstance方法;
- JDBC中Connection对象的获取
- Hibernate中SessionFactory创建Session
- Spring中IOC容器创建管理bean
- XML解析时的DocumentBuilderFactory创建解析器对象
- 反射中Class对象的newInstance()
相关推荐
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
设计模式之工厂模式Java实现和类设计图,包括简单工厂模式、工厂方法模式和抽象工厂模式
Java设计模式之工厂模式 Java设计模式之工厂模式
设计模式之工厂模式详细
Java设计模式之工厂模式实现,供大家一起共同分享学习。
NULL 博文链接:https://jacky-dai.iteye.com/blog/1927487
JAVA设计模式之工厂模式.pdf
java设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种...
javascript设计模式之工厂模式.docx
设计模式之工厂模式 什么是工厂模式? 工厂模式是一种常见的设计模式,将我们创建对象的行为封装(因为创建对象的行为往往是重复的)然后直接调用工厂所给出的方法创建对象即可。 工厂模式有三种: 1. 简单工厂模式...
javascript设计模式之工厂模式示例讲解.docx
Java设计模式之工厂模式(Factory).doc
将《Head First 设计模式》(中文版)按章节进行了分割,每章一个文件,方便大家下载。