java汽车生产工厂模式_什么是工厂模式java
什么是工厂模式java
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
简单的讲就是用工厂方法代替了new的操作,在通俗点就是说,你new一个对象的时候直接调用工厂方法就行了,在编程时,需要定义一个工厂接口,由不同的的子类去实现,再定一个具体工厂类,定义一个产生实例的方法,我们通过这个方法来获得实例就行了。
优点:
1、一个调用者想创建一个对象,只要知道其名称就可以了。
2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。
3、屏蔽产品的具体实现,调用者只关心产品的接口。
缺点:
每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。
应用实例:
1、您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。
工厂模式的简单实现如下://所有车的接口 有一个共同改的方法 开车
public interface Car {
public void drive();
}
//奥迪类 实现car接口因为奥迪车也是车 肯定可以开的嘛
public class Audi implements Car {
public Audi(){
System.out.println("生产出一辆奥迪");
}
@Override
public void drive() {
System.out.println("开奥迪");
}
}
//宝马类 实现car接口因为宝马车也是车 肯定也可以开
public class Bmw implements Car{
public Bmw(){
System.out.println("生产出一辆宝马");
}
@Override
public void drive() {
System.out.println("开宝马");
}
}
//生产车的工厂 该工厂接收一个车名 你只需要告诉他你要生产什么车 就可以生产出对应的车出来
public class CarFactory {
public static Car getCar(String caename){
if(caename.equals("audi")){
return new Audi();
}else if(caename.equals("bmw")){
return new Bmw();
}
return null;
}
}
//测试
public class Test {
public static void main(String[] args) {
//告诉工厂类 你需要生产出一辆奥迪车 那么给昂他传一个参数audi进去
Car audi = CarFactory.getCar("audi");
//就可以生产出奥迪的车 调用开车的方法就可以开车啦
audi.drive();
//宝马类似
Car bmw = CarFactory.getCar("bmw");
bmw.drive();
}
}
输出:
成产出一辆奥迪
开奥迪
生产出一辆宝马
开宝马
java汽车生产工厂模式_什么是工厂模式java相关推荐
- 抽象工厂模式_设计模式——抽象工厂模式
阅读目录 使用频率:★★★★★ 一.什么是抽象工厂模式 二.补充说明 三.角色 四.例子 使用频率:★★★★★ 一.什么是抽象工厂模式 就是对一组具有相同主题的工厂进行封装(维基百科解释的很到位): ...
- java严格模式_“use strict” 严格模式使用(前端基础系列)
ECMAscript5添加一种严格模式的运行模式("use strict"),让你的js语句在更加严格的环境下进行运行: 一.主要作用: 消除版本javascript中一些不合理及 ...
- java单例模式恶汉模式_单例模式之懒汉模式恶汉模式
单例模式,其实就是对于一个类,只能新建一个对象,不能有多个重复的对象.这样使得在程序在运行时,比如日志加载时能找到唯一的对象,以至正确匹配.就类似于一山不能有二虎一样.主要的思想其实就是运用stati ...
- java webservice报文过长_工作1-5年的Java程序猿到底需要怎样的一个技术栈?
工作1-5年的Java程序猿到底需要怎样的一个技术栈? 前言: 具有1-5年开发经验的程序员 需要学习的内容其实还有很多很多. 今天跟大家交流一下希望分享出来的对大家能够有帮助,这是我这些年总结出的一 ...
- java是脚本语言吗_从脚本语言到Java
从脚本语言到Java 板桥里人 jdon.com 2002/3 以前我是一直用脚本语言,使用多了,不知不觉一直把数据库设计当作系统设计的主要任务,使用java后,我觉得数据库设计只是一个基础 和前期工 ...
- 无忧考吧2017二级java_无忧考吧二级JAVA超级模拟软件下载_无忧考吧二级JAVA超级模拟软件官方下载-太平洋下载中心...
无忧考吧二级JAVA超级模拟软件是一款可以帮助用户朋友来学习计算机二级java语言考试的软件,使用这款二级java模拟考试软件可以帮助用户快速的掌握学习内容和操作逻辑,让你顺利的通过二级java考试. ...
- java 序列化概念和作用_结合代码详细解读Java序列化与反序列化概念理解
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...
- java调用打印预览_急求一个用Java实现的打印及打印预览功能的Demo
展开全部 package com.szallcom.tools; import java.awt.BorderLayout; import java.awt.Color; import java.aw ...
- java和python混合编程_浅谈C++与Java混合编程
在学习编程的过程中, 我觉得不止要获得课本的知识, 更多的是通过学习技术知识提高解决问题的能力, 这样我们才能走在最前方, 更 多 Java 学习,请登陆疯狂 java 官网. 现实的情况是, 真实的 ...
- 怎么把java安装进老年机_环境搭建 - 老人与JAVA - 博客园
安装JDK 1:下载安装 在这个页面可以看到最新的版本,在这个页面的最下方有一个入口可以下载历史版本: 警告:这些年长的JRE和版本的JDK提供帮助开发人员调试问题在更旧的系统.他们不是最新的安全补丁 ...
最新文章
- Ubuntu18.04安装keras(tensorflow)从无到有实录
- 听说过OpenJDK,没说过OpenValueJDK吧?
- category android:name=android.intent.category.DEFAULT / 惹的祸
- HDU6223 - Infinite Fraction Path
- 用jsonserve和axios做交互_详解解决使用axios发送json后台接收不到的问题
- 《精通 ASP.NET MVC 5》----1.5 本书的结构
- 计算机网络图标显示不出来,网络图标不见了汇总解决教程
- 1分钟教会你cad如何转pdf
- b85主板装服务器系统,华硕b85主板装不上win7怎么办
- 云风:游戏数值公式的表象与本质
- python日期相减得到年龄_在dataframe两列日期相减并且得到具体的月数实例
- 四级网络工程师笔记-操作系统(中)
- python中sub函数用法_Python pandas.DataFrame.sub函数方法的使用
- springcloud2.2.1 oauth2实现用户认证授权及sso
- 2021-10-09
- QPBOC快速借贷记流程(2)
- oracle操作题——试卷题
- Overview of technical writing courses | 技术写作课程概览
- 如何防止数据泄密和丢失?22项安全策略,守护企业数据安全
- UVM学习笔记—寄存器模型的搭建及使用