• 关于设计模式


设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结,是一种设计思维,使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化。使用设计模式,使得开发变得更规范和简单。

  • 工厂模式


  1. 概述:属于创建型设计模式,需要生成的对象叫做产品 ,生成对象的地方叫做工厂。
  2. 使用场景:在任何需要生成复杂对象的地方,都可以使用工厂方法模式, 直接用new可以完成的不需要用工厂模式。个人理解,重点就是这个复杂 (构造函数有很多参数)和 是否可以 直接用new。
  • 工厂模式例子


假设现在的场景是某个宝马子生产公司,正在按需求生产宝马汽车,那么,如下:

  1. 公司具有宝马汽车,该公司的汽车都有共同的行为所以有了该汽车公司的一个接口,用来规范该公司的所有汽车的行为属性,这里假设,只有展示行为——show();
  2.  1 /**
    2 * 接口:定义该公司产品的通用属性和行为
    3 * @author
    4 *
    5 */
    6
    7 public interface BmwCar {
    8
    9 public String showBmwCar();
    10 }
  3. 具体实现该接口,也就是实现该公司符合该要求的汽车产品,如下,假设,该生产公司只生产Bmw523和Bmw320两个产品;
  4. 1 public class Bmw523 implements BmwCar{
    2
    3 @Override
    4 public String showBmwCar() {
    5 String Bmw523Info = "我是Bmw523";
    6 return Bmw523Info;
    7 }
    8
    9 }
    public class Bmw320 implements BmwCar{
    
        @Override
    public String showBmwCar() {
    String Bmw320Info = "我是Bmw320";
    return Bmw320Info;
    } }
  5. 来一个具体生产创作汽车产品的具体工厂BmwFactory;
  6.  1 /**
    2 * 具有生产功能的工厂
    3 * @author
    4 *
    5 */
    6
    7 public class BmwFactory {
    8
    9 public BmwCar createBmw320() {
    10 return new Bmw320();
    11 }
    12
    13 public BmwCar createBmw532() {
    14 return new Bmw523();
    15 }
    16 }
  7. 来一个实例测试,我要买车啦
  8.  1 public class TestCreateBmw {
    2
    3 public static void main(String[] args) {
    4
    5 BmwFactory myFactory = new BmwFactory();//实例化工厂
    6 BmwCar myBmw = myFactory.createBmw320();//实例化一个产品
    7 System.out.println( myBmw.showBmwCar() );//使用该产品
    8 }
    9
    10 }

*

java设计模式_工厂模式的更多相关文章

  1. java设计模式2————工厂模式

    1.工厂模式介绍: 1.1.实现了创建者与调用者的分离 1.2.详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 1.3.所遵循的OOP原则: 开闭原则:对扩展开放,对修改关闭 依赖倒转原则:面向 ...

  2. 浅析JAVA设计模式之工厂模式(一)

    1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...

  3. Java设计模式之工厂模式(Factory模式)介绍(转载)

    原文见:http://www.jb51.net/article/62068.htm 这篇文章主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式.工厂方法.抽象工 ...

  4. Java 设计模式之工厂模式(二)

    原文地址:Java 设计模式之工厂模式(二) 博客地址:http://www.extlight.com 一.背景 本篇内容是 Java 设计模式创建型模式的第二篇.上一篇主题为 <Java 设计 ...

  5. 浅析JAVA设计模式之工厂模式(二)

    1 工厂方法模式简单介绍 工厂方法 (Factroy Method)模式:又称多态性工厂模式(Polymorphic Factory),在这样的模式中,核心工厂不再是一个详细的类.而是一个抽象工厂,提 ...

  6. java 设计模式之工厂模式与反射的结合

    工厂模式: /**  * @author Rollen-Holt 设计模式之 工厂模式  */   interface fruit{     public abstract void eat(); } ...

  7. JAVA设计模式--抽象工厂模式

    抽象工厂设计模式 1.系统中有多个产品族,而系统一次只可能消费其中一族产品2.同属于同一个产品族的产品以其使用.来看看抽象工厂模式的各个角色(和工厂方法的如出一辙):抽象工厂角色: 这是工厂方法模式的 ...

  8. Java设计模式之-----工厂模式(简单工厂,抽象工厂)

    一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...

  9. Java设计模式之工厂模式(简单工厂模式+工厂方法模式)

    摘自http://blog.csdn.net/jason0539/article/details/23020989 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是 ...

随机推荐

  1. vue3.0入门(一)

    前言 最近在b站上学习了飞哥的vue教程 学习案例已上传,下载地址 使用方式 使用在线cdn 下载js文件并自托管,引入到项目后使用 使用npm安装后,用cli来构建项目 声明式渲染 Vue2需引入v ...

  2. Python命名空间——locals()函数和globals()函数及局部赋值规则

    Python使用叫做命名空间的东西来记录变量的轨迹.命名空间只是一个 字典,它的键字就是变量名,字典的值就是那些变量的值.实际上,命名空间可以象Python的字典一样进行访问,一会我们就会看到. 在一 ...

  3. Springboot自带定时任务实现动态配置Cron参数

    同学们,我今天分享一下SpringBoot动态配置Cron参数.场景是这样子的:后台管理界面对定时任务进行管理,可动态修改执行时间,然后保存入库,每次任务执行前从库里查询时间,以达到动态修改Cron参 ...

  4. (四)羽夏看C语言——循环与跳转

    写在前面   由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...

  5. WEB漏洞——SQL

    由于我的博客是学到渗透的时候才做的,没有关于WEB漏洞的笔记,现在发现WEB层面的漏洞有些不太熟悉了,边写一下笔记边复习一下,就从sql注入开始吧 话不多说先上大佬写的表[ctfhub]SQL注入 - ...

  6. Redis的持久化机制与内存管理机制

    1.概述 Redis的持久化机制有两种:RDB 和 AOF ,这两种机制有什么区别?正式环境应该采用哪种机制? 我们的服务器内存资源是有限的,如果内存被Redis的缓存占满了怎么办?这就要看Redis ...

  7. Appium问题解决方案(6)- Java堆栈错误:java.lag.ClassNotFoundException:org.eclipse.swt.widets.Control

    背景 运行脚本出现 SWT folder '..\lib\location of your Java installation.' does not exist. Please set ANDROID ...

  8. C# Dapper基本三层架构使用 (四、WinForm UI层)

    UI层主要功能是显示数据和接受传输用户的数据,可以在为网站的系统运行提供交互式操作界面,表示层的应用方式比较常见,例如Windows窗体和Web页面. 在项目中增加WinForm应用程序,结构如下 添 ...

  9. JS005. 拷贝引用数据类型Array使其指向不同堆的解决方案

    一个很常见的语法问题,但专注实现需求时经常会忘记去避免,导致最终问题的出现,再花时间排查.为此专门整理一篇解决方法的博客,也加强一下自己的记忆. TAG: JSON.parse() JSON.stri ...

  10. 部署yum仓库以及NFS共享服务

    目录: 一.YUM概述 二.准备安装源 三.访问YUM仓库 四.本地YUM仓库 五.YUM工具概述 六.软件包查询.安装.卸载 七.NFS共享 一.YUM概述 YUM(Yellow dog Updat ...