java设计模式-工厂方法模式
时间:2022-07-22
本文章向大家介绍java设计模式-工厂方法模式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
模式描述
工厂方法模式提供一个用于创建产品的接口,由实现类决定实现哪些产品。工厂方法模式使一个类的实例化延迟到子类,并且只适用于一个产品的等级结构。
优点
可以一定程度上解耦,消费者和产品实现类隔离开,只依赖产品接口(抽象产品),产品实现类如何改动与消费者完全无关。
例子
还是以之前简单工厂的手机为案例:
/**
* 产品接口
*/
public interface Phone {
public Phone getPhone();
}
package factory;
/**
* 苹果
*/
public class AppleFactory implements Phone {
@Override
public Phone getPhone() {
return new AppleFactory();
}
public String getName()
{
return "apple";
}
}
package factory;
/**
* vivo
*/
public class VivoFactory implements Phone {
@Override
public Phone getPhone() {
return new VivoFactory();
}
}
package factory;
/**
* 消费者
*/
public class Coustomer {
public static void main(String[] args) {
Phone phone = new AppleFactory();
System.out.println(phone.getPhone());
}
}
和简单工厂区别
1:工厂模式方法(factory method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。
2:工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。你想要加功能,本来是要改工厂类的,而现在是修改客户端。
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- GO 依赖管理工具go Modules(官方推荐)
- Go 之 interface接口理解
- Go 三个点(...)用法
- Go操作Elasticsearch
- Golang 跨域
- 使用AB对Nginx压测和并发预估
- gin集成swagger构建api文档
- golang 开源后台管理系统
- vue-element-admin 后台动态加载菜单
- golang之数据验证validator
- golang之JWT实现
- golang 单点登录系统(go-sso)
- nginx优化https(ocsp)
- vue-element-admin 上传upload图片慢问题处理
- Centos8 下安装最新 OpenCV4.3