Java的工厂模式在框架中是用的到很多的,所谓的工厂模式,其实也就是用一个接口来创建对象,把实例化的工作推迟到子类去实现。这样在主函数中就可以直接创建一个工厂类,再通过这个工厂类实现操作。

  假设有一个水果工厂,工厂可以生产香蕉,生产苹果,就可以写成如下代码:

  FruitInterface.java

package com.muggle.project;

//水果接口
public interface FruitInterface { public void produce();
}

 

  下面是要生产的香蕉类和苹果类:

  Banana.java

package com.muggle.project;
//生产一个香蕉
public class Banana implements FruitInterface { @Override
public void produce(){
// TODO Auto-generated method stub
System.out.println("--------生产了一个香蕉-------"); } }

  Apple.java

package com.muggle.project;

public class Apple implements FruitInterface {

    @Override
public void produce() {
// TODO Auto-generated method stub
System.out.println("--------生产了一个苹果-------"); } }

 再定义一个水果工厂类

  FruitInterface.java

package com.muggle.project;
//水果工厂
public class FruitFactory { public FruitInterface getFruit(String key) {
if("Banana".equals(key)) {
return new Banana(); }
else if ("Apple".equals(key)) {
return new Apple();
}
else {
return null;
}
}
}

  最后就可以通过水果工厂生产香蕉和苹果了

  TestDrive.java

package com.muggle.project;

public class TestDrive {

    public static void main(String[] args) {
// TODO Auto-generated method stub /* 不用工厂模式的原始方法
*/
// FruitInterface banana=new Banana();
// banana.produce();
// FruitInterface apple=new Apple();
// apple.produce(); FruitFactory factory =new FruitFactory();
FruitInterface banana=factory.getFruit("Banana");
banana.produce();
} }

  结果如下所示,通过这种方法就能实现一个简单的工厂,但是也有一个弊端:就是新加类的时候需要一直else if,下面就介绍一种反射的方法来实现更好的工厂模式。下图是运行结果

Java的工厂模式(一)的更多相关文章

  1. !!转!!java 简单工厂模式

    举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面.女娲造人,这就是 ...

  2. 一张图搞定Java设计模式——工厂模式! 就问你要不要学!

    小编今天分享的内容是Java设计模式之工厂模式. 收藏之前,务必点个赞,这对小编能否在头条继续给大家分享Java的知识很重要,谢谢!文末有投票,你想了解Java的哪一部分内容,请反馈给我. 获取学习资 ...

  3. Java抽象工厂模式

    Java抽象工厂模式 基本定义 抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的.抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象 ...

  4. Java简单工厂模式

    Java简单工厂模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简 ...

  5. Java 静态工厂模式的使用

    多相关文章请参考:http://www.enjoytoday.cn/categorys/java 静态工厂模式给人的第一印象就是:static+abstract.这两个词汇已经说明了一切,一个是周期长 ...

  6. 【设计模式】Java设计模式 -工厂模式

    [设计模式]Java设计模式 -工厂模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! 目 ...

  7. java 深入浅出工厂模式

    一.引子 话说十年前,有一个暴发户,他家有三辆汽车——Benz奔驰.Bmw宝马.Audi奥迪,还雇了司机为他开车.不过,暴发户坐车时总是怪怪的:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“ ...

  8. 10.Java设计模式 工厂模式,单例模式

    Java 之工厂方法和抽象工厂模式 1. 概念 工厂方法:一抽象产品类派生出多个具体产品类:一抽象工厂类派生出多个具体工厂类:每个具体工厂类只能创建一个具体产品类的实例. 即定义一个创建对象的接口(即 ...

  9. 从基础知识到重写Spring的Bean工厂中学习java的工厂模式

    1.静态工厂模式其他对象不能直接通过new得到某个类,而是通过调用getInstance()方法得到该类的对象这样,就可以控制类的产生过程.顺带提一下单例模式和多例模式:  单例模式是指控制其他对象获 ...

随机推荐

  1. C++实现-特征码遍历

    #include <stdio.h> #include <stdlib.h> #include <windows.h> union Base { DWORD add ...

  2. jzoj100044

    完全背包問題 我們可以將數組內每個元素看成一個物品,這樣問題就轉化成: 現有n個物品,每個物品可以取a[i]~b[i]個,價值為d[i],費用為c[i],問怎麼樣取讓費用為0且價值最大 我們可以先每種 ...

  3. .NET Windows Form 改变窗体类名(Class Name)有多难?

    研究WinForm的东西,是我的一个个人兴趣和爱好,以前做的项目,多与WinForm相关,然而这几年,项目都与WinForm没什么关系了,都转为ASP.NET MVC与WPF了.关于今天讨论的这个问题 ...

  4. [Other] 应用下载网站的APK/IPA等常见MIME设置

    类型 扩展名 mime 错误做法 安卓安装包 .apk application/vnd.android.package-archive application/vnd.android 苹果安装包 .i ...

  5. 自己实现简单的RSA秘钥生成与加解密(Java )

    最近在学习PKI,顺便接触了一些加密算法.对RSA着重研究了一下,自己也写了一个简单的实现RSA算法的Demo,包括公.私钥生成,加解密的实现.虽然比较简单,但是也大概囊括了RSA加解密的核心思想与流 ...

  6. chromedriver与google版本的对应

    解决chromedriver与chrome版本不兼容的问题 附chromedriver下载地址http://npm.taobao.org/mirrors/chromedriver/ 以下是对应的chr ...

  7. POJ 1082

    #include <iostream> using namespace std; int main() { //freopen("acm.acm","r&qu ...

  8. Day1 Excel基本知识

    1. 数据分析过程 2. 2016增强版Excel 特性 科学管理,科学决策的工具 精细化,量化分析的工具 3. Excel 学什么? 计算机解决问题的思维(抽象) 数据分析的思路与方法 掌握技巧和方 ...

  9. HTML页面的重绘(repaint)和重流(reflow)

    重流(Reflow)是指布局引擎为frame计算图形的过程. frame是一个矩形,拥有宽高和相对父容器的偏移.frame用来显示盒模型(content model), 但一个content mode ...

  10. 四、CLR执行程序集中代码和IL代码简介

    三.加载公共语言运行时中介绍了在安装了.Net Framework中加载公共语言运行时,公共语言运行时加载程序集的过程.以及通过vs stdio设置源码编译的目标平台的过程. 本问主要介绍公共语言加载 ...