工厂方法模式是设计模式中应用最广泛的模式。在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要。工厂方法模式就是解决这个问题,它通过面向对象的手法,将所要创建的具体对象创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。

Bmw.java

package fac;

public interface Bmw {
//产品的信息介绍
void showInfo();
}
class Bmw3 implements Bmw{ @Override
public void showInfo() {
// TODO Auto-generated method stub
System.out.println("宝马3系");
} }
class Bmw5 implements Bmw{ @Override
public void showInfo() {
// TODO Auto-generated method stub
System.out.println("宝马5系");
} }
class Bmw7 implements Bmw{ @Override
public void showInfo() {
// TODO Auto-generated method stub
System.out.println("宝马7系");
} }

BmwFactory.java

package fac;

//汽车生产工厂接口
public interface BmwFactory {
Bmw productBmw(); }
class Bmw3Factory implements BmwFactory{ @Override
public Bmw productBmw() {
// TODO Auto-generated method stub
System.out.println("生产宝马3系");
return new Bmw3();
} }
class Bmw5Factory implements BmwFactory{ @Override
public Bmw productBmw() {
// TODO Auto-generated method stub
System.out.println("生产宝马5系");
return new Bmw5();
} }
class Bmw7Factory implements BmwFactory{ @Override
public Bmw productBmw() {
// TODO Auto-generated method stub
System.out.println("生产宝马7系");
return new Bmw7();
} }

Main.jav

package fac;

public class Main {
public static void main(String[] args) {
Bmw b3 = new Bmw3Factory().productBmw();
b3.showInfo();
Bmw b5 = new Bmw5Factory().productBmw();
b5.showInfo();
Bmw b7 = new Bmw7Factory().productBmw();
b7.showInfo();
}
}

输出:

生产宝马3系
宝马3系
生产宝马5系
宝马5系
生产宝马7系
宝马7系

说明:通过工厂把new对象给隔离,通过产品的接口可以接受不同实际产品的实现类,实例的类名的改变不影响其它合作开发人员的编程。

java之工厂方法设计模式的更多相关文章

  1. PHP设计模式一:工厂方法设计模式

    一.什么是工厂方法模式 作为一种创建型设计模式,工厂方法模式就是要创建“某种东西”.对于工厂方法,要创建的“东西”是一个产品,这个产品与创建它的类之间不存在绑定. 实际上,为了保持这种松耦合,客户会通 ...

  2. 比较 Java 静态工厂方法与构造函数

    1 什么是静态工厂方法 Java 静态工厂方法是在方法前加上 public static,让这个方法变为公开.静态的方法.该方法返回该类的一个实例,就好像一个工厂生产出一个产品.所以称之为静态工厂方法 ...

  3. Java之工厂方法

    普通工厂模式: 第一步:定义接口,坚持面向接口编程, package dp; public interface Sender {    public void send();} 第二步:实现接口: p ...

  4. (Factory method)工厂方法设计模式

    定义: 1.) 工厂方法模式是用来封装对象的创建,通过让子类来决定创建的对象是什么,来达到将对象创建的过程封装的目的: 2.) 定义了一个创建对象的接口,但由子类决定要实例的泪是哪一个.工厂方法让类把 ...

  5. 使用C# (.NET Core) 实现简单工厂(Simple Factory) 和工厂方法设计模式 (Factory Method Pattern)

    本文源自深入浅出设计模式. 只不过我是使用C#/.NET Core实现的例子. 前言 当你看见new这个关键字的时候, 就应该想到它是具体的实现. 这就是一个具体的类, 为了更灵活, 我们应该使用的是 ...

  6. java 内部类 工厂方法

    用内部类实现工厂模式 :优先使用类而不是接口,如果你的设计中需要某个接口,你必须了解它,否则不到迫不得已,不要将其放到你的类中 //: innerclasses/Factories.java impo ...

  7. JAVA设计模式--工厂方法模式

    工厂方法设计模式 抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关.是具体工厂角色必须实现的接口或者必须继承的父类.在java中它由抽象类或者接口来实现.具体工厂角色:它含有和具体业务逻辑有关 ...

  8. Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)

    工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...

  9. 设计模式3---工厂模式(Factory Pattern简单工厂、工厂方法、抽象工厂)

    工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...

随机推荐

  1. 深度优先搜索 & 广度优先搜索

    目录 邻接表 邻接表的深度优先搜索 邻接表的广度优先搜索 临接数组 临接数组的深度优先搜索 临接数组的广度优先搜索 二叉树 二叉树的深度优先搜索 二叉树的广度优先搜索 邻接表 邻接表的深度优先搜索 假 ...

  2. ansible 基础命令

    ansible 命令总结 1. Ad-HOC: 适合临时执行任务2. Playbook: 适合一些复杂的部署和配置环境 一 . Ad-HOC: 适合临时执行任务ansible-doc -l 查看ans ...

  3. 搞了一次IE浏览器兼容,我有点奔溃....

    浏览器兼容问题(主要时IE上遇到的坑坑坑) caniuse 工具(基本参考作用,实际还是需要测试) (1)安装babel-polyfill基本操作了,IE浏览器没有内置Promise对象,不仅如此,几 ...

  4. MySql全文检索使用详解

    实际项目中经常会有一个字段存储多个值用逗号分隔的场景,当分开查询的时候,使用模糊查询会非常影响效率.mysql提供了全文检索函数可以有效解决这一问题: 1.数据结构 ID CODE MSG 1 111 ...

  5. javascript for循环+异步请求导致请求顺序不一致

    工作中遇到一个问题 for循环,再把循环出来的ID再进行二次请求 这就导致一个问题 请求结果返回顺序不一致 原因:异步请求会把回调事件放入微任务事件队列,宏任务执行完毕再执行微任务,具体参考事件队列机 ...

  6. ABAP基础语法

    1.数据类型及属性 类型 说明 C N 0到9之间字符组成的数字字符串 D 日期格式必须为 YYYYMMDD T 格式为 24-hour的 HHMMSS I -2.147.483.648 to +2. ...

  7. 可以设置实体在Dynamics 365高级查找中不显示吗?

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  8. 百度大脑IOCR财会票据识别技术接入小程序,快速实现财会票据识别

    本文主要介绍iOCR财会票据识别的小程序功能实现. 想了解微信小程序的开发过程,请参看我之前的帖子:<UNIT接入小程序>https://ai.baidu.com/forum/topic/ ...

  9. Linux 删除特殊字符文件名或目录

    通过文件的inode号删除文件 先用ls -i 找出要删除文件的inode 号 ls -i |grep xxxxxx|awk '{print $2}'|xargs -i rm -f {} xxxxxx ...

  10. Unity-使用UnityRemote调试手机Android Studio打印日志

    抛出问题:  1.Unity调试Android的时候默认情况是build打包成apk,安装到手机运行,调试起来很不方便,如何快速在手机上运行呢?  2.如何像unity的console一样在andro ...