Factory类不是接口、抽象类,就是普通的类。

Factory就像一个工厂一样,可以返回很多对象。

子类在继承、实现抽象类和接口后由Factory类处理,由于子类可能会有多个,Factory根据客户端的调用返回不同的子类对象。

代码实现。

定义接口

定义一个Fruit接口,里面有一个getName()抽象方法。

package factory;
/**
* 定义接口
* 2018-05-19
*/
public interface Fruit {
public void getName();//抽象方法
}

定义接口的两个子类

apple类

package factory;
/**
* 定义接口的Apple子类
* 2018-05-19
*
*/
public class Apple implements Fruit { @Override
public void getName() {
System.out.println("我是一个苹果。");
}
}

Orange子类

package factory;
/**
* 定义接口的Orange子类
* 2018-05-19
*/
public class Orange implements Fruit { @Override
public void getName() {
System.out.println("我是一个橘子。");
} }

定义工厂类

package factory;
/**
* 工厂类:用于连接接口和子类,尽量减少客户端的复杂性
* 2018-05-19
*
*/
public class Factory {
        //根据客户端的不同调用返回不同的子类对象
public static Fruit getInstance(String name) {
if(name.equals("apple")) {
return new Apple();
}else if (name.equals("orange")) {
return new Orange();
}else {
return null;
}
}
}

测试代码

package factory;
/**
* 测试代码
* 2018-05-19
*
*/
public class TestDemo {
public static void main(String[] args) {
//向上转型
//返回的是一个子类的对象,通过接口引用来指向
//客户端仅做及少量的修改变可实现多个子类对象的生成
Fruit fruit = Factory.getInstance("apple");
fruit.getName();
}
}

结果:

我是一个苹果。

Java编程--简单的Factory程序(工厂设计模式)的更多相关文章

  1. Java编程的逻辑 (54) - 剖析Collections - 设计模式

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  2. Factory,工厂设计模式,C++描述

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  3. 【自学编程】C语言编程简单的小程序,计算长方体体积!

    计算长方体体积 有朋友会说长方体体积还不好算吗?长X宽X高.没错用计算器一下就可以出结果,编程反而麻烦些,但是我们说的是这种思维,如果复杂的重复运算的话写好程序就非常简单了. 简单运算下一个固定高度的 ...

  4. java编写简单的累加程序

    编程思路:1.建立类包demo: 2.在类包中建立CommanParameter类: 3.利用for循环通过强制类型转换将在后台中输入的String类型的字符转换为整型并进进累加操作: package ...

  5. Java编程打开运行exe程序

    String path = "notepad.exe"; //(C:\Program Files\Tencent\QQ\Bin\qq.exe) try { Runtime runt ...

  6. dom4j解析器 基于dom4j的xpath技术 简单工厂设计模式 分层结构设计思想 SAX解析器 DOM编程

    *1 dom4j解析器   1)CRUD的含义:CreateReadUpdateDelete增删查改   2)XML解析器有二类,分别是DOM和SAX(simple Api for xml).     ...

  7. 利用Java反射机制优化简单工厂设计模式

    之前项目有个需求,审批流程的时候要根据配置发送信息:发送短信.发送邮件.当时看到这个就想到要用工厂模式,为什么要用工厂模式呢?用工厂模式进行大型项目的开发,可以很好的进行项目并行开发.就是一个程序员和 ...

  8. Java反射机制(五):使用反射增强简单工厂设计模式

    关于简单工厂设计模式的讲解,可参考博文<设计模式: 简单工厂模式>,此处不再介绍:  我们先观察之前介绍的关于简单工厂: public class OperateFactory { pub ...

  9. java简单工厂设计模式

    一.基本定义 /* *简单工厂设计模式: *文字描述理解: * 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式. * 通过专门定义一个类来负责创建其它类的实例,被创建的实例通常 * 都具有共同 ...

  10. Java编程的23种设计模式

    设计模式(Design Patterns)                                   --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用. ...

随机推荐

  1. 闲话 4.12——对 Worpitzky 恒等式的几个证明

    \[\sum_{i}\left\langle\begin{matrix}n\\i\end{matrix}\right\rangle \binom{i+k}{n}=k^n \] 通俗的证明(具体数学的习 ...

  2. 【1】JobManager启动

    一.Flink底层通信技术 Akka + Netty Akka:它是基于协程的,基于scala的偏函数 Netty:相比更加基础一点,可以为不同的应用层通信协议(RPC,FTP,HTTP等)提供支持 ...

  3. Mac安装Flink

    版本 Flink  flink-1.13.1-bin-scala_2.11.tgz 依赖scala2.12 一.下载 https://archive.apache.org/dist/flink/ 解压 ...

  4. .Net Core3.1 集成Log4net

    1.准备 首先nuget添加下引用  Microsoft.Extensions.Logging.Log4Net.AspNetCore 目前的版本为v3.1.0 ,添加完成后我们开始注册. 2.注册 2 ...

  5. Convert byte array to short array in C#

    Create the short array at half the size of the byte array, and copy the byte data in: short[] sdata ...

  6. Linux Vim 最全面教程:从入门到精通

    一.引言 Vim 是一款功能强大且在 Linux 系统中广泛使用的文本编辑器.它有着高效的编辑模式.丰富的快捷键以及众多强大的功能,对于想要深入学习 Linux 系统操作以及进行文本处理相关工作的新手 ...

  7. 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!

    引子:那个让运维集体加班的夜晚 "凡哥!线上服务响应时间飙到10秒了!"凌晨1点,实习生小李的语音带着哭腔. 监控大屏上,JVM堆内存曲线像坐了火箭--刚扩容的16G内存,30分钟 ...

  8. python进程 - 调试报错 you are not using fork to start your child processes

    在走这段代码的时候报错了,记录一下我的调试过程,感觉有个思路来走就挺好的. 1.报错与解决 文件名字:ClassifierTest.py import torch import torchvision ...

  9. Vulnhub-election靶机

    总结:本靶机给了很多目录,对于信息收集考察的比较严格,给了一个数据库,很多时候容易陷进去,拿到用户权限登录后,也需要大量的信息收集,虽然可以在数据库里找到root和密码,但是不是靶机本身的,最终利用s ...

  10. excel 文件提示已受损 解决方案

    1.打开office excel 2.python 语言save 方法导致,将后缀改为.xls 3.用WPS打开