工厂模式
模式 工厂
2023-09-14 08:58:22 时间
工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。
工厂模式有两种形式:工厂方法和抽象工厂。它们的意图是一样的:提供一个接口,在不指定具体类的情况下,创建相关或者依赖的对象。
使用普通代码实现工厂模式
1 package com; 2 interface Fruit { 3 public abstract void eat(); 4 } 5 class Apple implements Fruit { 6 public void eat() { 7 System.out.println("吃苹果"); 8 } 9 } 10 class Orange implements Fruit { 11 public void eat() { 12 System.out.println("吃橘子"); 13 } 14 } 15 class Factory { 16 //根据水果的名字,得到对应的水果 17 public static Fruit getInstance(String fruitName) { 18 Fruit f = null; 19 if("Apple".equals(fruitName)){ 20 f = new Apple(); 21 }else if("Orange".equals(fruitName)){ 22 f = new Orange(); 23 } 24 return f; 25 } 26 } 27 public class Test { 28 public static void main(String[] args){ 29 Fruit f = Factory.getInstance("Apple"); 30 f.eat(); 31 f = Factory.getInstance("Orange"); 32 f.eat(); 33 } 34 }
将反射机制应用于工厂模式
1 package com; 2 interface Fruit { 3 public abstract void eat(); 4 } 5 class Apple implements Fruit { 6 public void eat() { 7 System.out.println("吃苹果"); 8 } 9 } 10 class Orange implements Fruit { 11 public void eat() { 12 System.out.println("吃橘子"); 13 } 14 } 15 class Factory { 16 //参数为包名+类名,根据这个路径可以获取到对应的类 17 public static Fruit getInstance(String ClassName) { 18 Fruit f = null; 19 try { 20 f = (Fruit) Class.forName(ClassName).newInstance(); 21 } catch (Exception e) { 22 e.printStackTrace(); 23 } 24 return f; 25 } 26 } 27 public class Test { 28 public static void main(String[] args){ 29 Fruit f = Factory.getInstance("com.Apple"); 30 f.eat(); 31 f = Factory.getInstance("com.Orange"); 32 f.eat(); 33 } 34 }
相关文章
- 电商项目基本业务概述||电商后台管理系统的功能|| 电商后台管理系统的开发模式(前后端分离)|| 电商后台管理系统的技术选型[通俗易懂]
- php 开发模式之工厂模式
- 【说站】js状态模式是什么
- 简单工厂模式、工厂方法模式和抽象工厂模式
- 工厂模式和策略模式结合使用的案例介绍
- Appium PO模式UI自动化测试框架——设计与实践
- Seata-Saga模式 原理
- 异步传输模式atm采用_什么是云主机
- 原来这么多年都用错了工厂模式
- 算法策略的主动选择,拒绝if...else...(策略模式+简单工厂模式)
- RabbitMQ:订阅模型-消息订阅模式
- 设计模式 | 创建型 | 工厂模式
- 容器开启特权模式后无法通过cadvisor获取GPU metrics指标
- 设计模式之抽象工厂模式(创建型)详解架构师
- 设计模式:工厂方法模式详解架构师
- 设计模式之简单工厂模式详解大数据
- 发布模式Redis实现订阅发布模式应用示例(redis订阅)
- Linux下使用串口模式的快速指南(linux串口模式)
- Linux系统教程:挽救模式破解root密码
- 开启mssql数据库模式之路(开启mssql模块)
- 为让学生上课注意力更集中 Zoom推出“集中模式”
- javascript模式设计之工厂模式详细说明
- PHP工厂模式使用方法