java设计模式-工厂模式
时间:2022-07-22
本文章向大家介绍java设计模式-工厂模式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
工厂模式种类
工厂模式可以分为三类:简单工厂模式,工厂方法模式以及抽象工厂模式。
简单工厂模式
简单工厂模式又称为静态工厂方法模式,为何称为静态工厂方法模式呢?是因为该模式主要由一个工厂类的静态方法来提供各种产品。
简单工厂模式的优点
这里假设有三个角色:消费者,生产者和产品。通过简单工厂模式消费者并不需要关心产品是如何生产出来的,也不需要关心产品制造的具体流程,只需要直接去生产者那里直接购买便可。这在一定程度上实现了生产者和产品之间的解耦,每个角色之间的分工变得更加明确。
简单工厂模式示例
产品接口
public interface Phone {
//产品类所继承的公共接口,也可以为抽象类
public String getPhoneName();
}
产品
/**
* 苹果生产商
*/
public class IPhone implements Phone {
@Override
public String getPhoneName() {
return "我们生产苹果手机";
}
}
/**
* vivo生产商
*/
public class VivoPhone implements Phone {
@Override
public String getPhoneName() {
return "我们生产vivo手机";
}
}
/**
* 华为生产商
*/
public class HuaWeiPhone implements Phone {
@Override
public String getPhoneName() {
return "我们生产华为手机";
}
}
工厂
/**
* 工厂负责生产各种手机,这里的生产可以理解为对象的创建
*/
public class Factory {
//苹果手机
private static final String APPLE = "apple";
//vivo手机
private static final String VIVO = "vivo";
//华为手机
private static final String HUAWEI = "huawei";
//根据用户的选择来提供手机
public static Phone create(String name)
{
switch (name)
{
case APPLE:
return new IPhone();
case VIVO:
return new VivoPhone();
case HUAWEI:
return new HuaWeiPhone();
default:
return null;
}
}
}
消费者(客户端)
/**
* 消费者
*/
public class Customer {
public static void main(String[] args)
{
//用户买个苹果手机
Phone phone = Factory.create("apple");
System.out.println(phone.getPhoneName());
//用户买个华为手机
Phone phone2 = Factory.create("huawei");
System.out.println(phone2.getPhoneName());
}
}
输出结果:
- 安全退出app,activoty栈管理
- JavaBean转Map方法
- JsBridge实现JavaScript和Java的互相调用
- JAVA-FTP批量大文件传输
- 独家 | 一文读懂TensorFlow(附代码、学习资料)
- 解决openssh漏洞,升级openssh版本
- 解决NTPD漏洞,升级Ntpd版本
- 独家 | 手把手教TensorFlow(附代码)
- HBase Region自动切分细节
- eclipse搭建ssh后台
- 解决mysql漏洞 Oracle MySQL Server远程安全漏洞(CVE-2015-0411)
- im4java包处理图片
- centOS7 mini配置linux服务器(五) 安装和配置tomcat和mysql
- RedisPool操作Redis,工具类实例
- 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 文档注释
- Yii框架的路由配置方法分析
- Android 购物车加减功能的实现代码
- Yii框架函数简单用法分析
- PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
- 浅析PHP7 的垃圾回收机制
- android BottomSheetDialog新控件解析实现知乎评论列表效果(实例代码)
- Laravel框架实现的上传图片到七牛功能详解
- Flutter沉浸式状态栏/AppBar导航栏/仿咸鱼底部凸起导航栏效果
- Android集成zxing扫码框架功能
- Android 实现抖音小游戏潜艇大挑战的思路详解
- 修改Android Studio 的 Logcat 缓冲区大小操作
- Android自定义View验证码输入框
- PHP生成随机字符串实例代码(字母+数字)
- Laravel框架中缓存的使用方法分析
- android实现搜索功能并将搜索结果保存到SQLite中(实例代码)