工厂模式是在项目开发中使用效率高,意一个接口,该定义用于创建对象。让子类来决定哪一个类实例。

这就是一个工厂类的示意图

接着来一个简单的样例:

如上图所看到的,我们首先定义我们的产品抽象类接口,也能够是抽象类:

package factory;

public abstract class PlatForm {

public void search(){

System.out.println("你搜索的结果是。。。

。。。

");

}

public abstract void music();

}

以下是一些实现类

package factory;

public class BaiduProduct extends PlatForm{

@Override

public void music() {

System.out.println("baidu music");

}

}

package factory;

public class Qihu360Product extends PlatForm{

@Override

public void music() {

System.out.println("360 music");

}

}

package factory;

public class SogouProduct extends PlatForm{

@Override

public void music() {

System.out.println("sogou music");

}

}

三个实现类已经完毕,以下我们要来一个工厂的抽象类package factory;

public abstract class Creator {

/**

* 创建一个产品对象,当中T 能够为 String Enum Class等 參数能够自己设置

* @param c

* @return

*/

public abstract T createProduct(Class c);

}以下是实现类

package factory;

public class ConcrentCreator extends Creator{

@Override

public T createProduct(Class c) {

PlatForm plat = null;

try {

/**

* 创建一个用于创建对象的接口,让子类去确定实例化哪一个对象。工厂方法,让一个类的实例化延迟到子类

*/

plat = (PlatForm) Class.forName(c.getName()).newInstance();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

return (T) plat;

}

}

package factory;

public class Client {

public static void main(String[] args) {

Creator creator = new ConcrentCreator();

//在这里能够把你要实例化的类给传进去。然后就可以调用你想要的方法。

PlatForm plat = creator.createProduct(BaiduProduct.class);

plat.search();

plat.music();

}

}

在这里面模仿了一个client,就能够输出你想要的结果。

在工厂模式方法中抽象产品类负责定义产品的共性,实现实物最抽象的定义;creator为产品抽喜创建类,也就是抽象工厂详细怎样创建产品类有详细的实现creator的工厂类来完毕。工厂类的变种非常多,以下,我总结类一个比較通用的源代码。

1:抽象产品类package factory.total;

public abstract class Product {

public void method1(){

//全部产品的共性

}

//抽象方法 详细有继承它的类去实现

public abstract void method2();

}2:产品实现类

package factory.total;

public class ConcretProduct1 extends Product{

@Override

public void method2() {

//TODO

}

}

package factory.total;

public class ConcretProduct2 extends Product{

@Override

public void method2() {

//TODO

}

}

3:抽象工厂类

package factory.total;

public abstract class Creator {

public abstract T createMethod(Class c);

}

4:详细工厂类:

package factory.total;

public class ConcreteCreator extends Creator{

@Override

public T createMethod(Class c) {

Product pro = null;

try {

pro = (Product) Class.forName(c.getName()).newInstance();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

return (T) pro;

}

}

场景模拟类

package factory.total;

public class Client {

public static void main(String[] args) {

Creator creator = new ConcreteCreator();

Product pro = creator.createMethod(ConcretProduct1.class);

pro.method1();

pro.method2();

}

}

当中工厂模式又分为简单工厂模式,和多级工厂模式,只是这两种情况。和上一种都比較类似了,当中简单工厂模式仅仅是简单的把抽象工厂类去掉,然后把工厂实现类的方法改成static方法。多级工厂模式是指:比如当我们见到一个比較复杂的项目时。全部的产品类都放到一个工厂类中去初始化会显得结构不清晰,那么我们如今就为每一种产品都有自己的一个工厂类;以下我会给出实例多级工厂类的应用。

我是有些基础类还是使用曾经的。仅仅只是为每一个产品添加了一个工厂类

1:抽象工厂类:

package factory.more;

public abstract class AbstractPlatFactory {

public abstract PlatForm createPlat();

}

2:详细工厂类:

package factory.more;

public class BaiduFactory extends AbstractPlatFactory{

@Override

public PlatForm createPlat() {

// TODO Auto-generated method stub

return new BaiduProduct();

}

}

package factory.more;

public class Qihu360Factory extends AbstractPlatFactory{

@Override

public PlatForm createPlat() {

return new Qihu360Product();

}

}

package factory.more;

public class SogouFactory extends AbstractPlatFactory{

@Override

public PlatForm createPlat() {

return new SogouProduct();

}

}

场景类:package factory.more;

public class Client {

public static void main(String[] args) {

PlatForm plat = new BaiduFactory().createPlat();

plat.search();

plat.music();

}

}这是多级工厂类的使用,

实际上还有抽象工厂类的应用,它是指为相关对象提供一组接口,如果没有指定具体的类。

(今天太晚了,过了一段时间,然后会说)

版权声明:本文博主原创文章。博客,未经同意不得转载。

java在工厂自动化的应用_java 工厂的变形模拟的各种应用相关推荐

  1. java 工厂模式详解_java 工厂模式的实例详解

    java 工厂模式的实例详解 工厂方法中的"工厂"和我们平常理解的一样:用于生产产品. 而客户是要和产品打交道,所以工厂方法模式的意义在于把客户和产品分开,达到解耦和更灵活的目的. ...

  2. java工厂方法模式记录日志_java工厂方法模式

    一:工厂方法模式 1.概念 工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式. 工厂方法模式的用意 ...

  3. java 工厂模式的写法_java工厂模式三种详解

    工厂方法模式(Factory Method) 工厂方法模式分为三种: 1.普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建.首先看下关系图: 举例如下:(我们举一个发送邮件和短 ...

  4. java实现红包要多少钱_Java实现发红包模拟

    packagecom.cmk;import javax.swing.*;import java.awt.*;importjava.awt.event.KeyAdapter;importjava.awt ...

  5. 基于XMC4800 Ethercat从站的工厂自动化解决方案

    背景 随着"工业4.0"与"工业互联网"概念的提出,"互联网+制造"的概念被大众所熟知,人们称之为第四次工业革命.在这样的背景下,新的工业自 ...

  6. java 工厂模式详解_Java设计模式之工厂模式详解

    简单工厂其实并不是设计模式,只是一种编程习惯. 首先我们创建父类Cup,所有杯子类的父类.再创建它的子类BigCup和SmallCup类. public abstract class Cup { pu ...

  7. java工厂模式定义宠物_Java设计模式之抽象工厂模式

    抽象工厂模式特点 抽象工厂模式与工厂模式最大的区别是每个单独的产品是一个工厂模式,而多个不同产品交互则是抽象工厂模式,抽象工厂模式通常要运用工厂模式的方法.通常,工厂模式的所有产品的创建都放在这个工厂 ...

  8. Java设计模式-工厂方法模式和抽象工厂模式

    工厂方法模式定义: 即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类(具体产品类)."一对一"的关系 1,一抽象工厂类派生出多个具体工厂类: 2, ...

  9. Java 9 JShell示例:集合静态工厂方法

    这篇文章继续了My My Java 9 Features博客文章中对Java9功能的探索. 在这里,我们在List,Set和Map接口中试验Java9 Collections静态工厂方法. 集合静态工 ...

最新文章

  1. Android studio 中引用jar的其实是Maven?(一)
  2. 华为手机logcat不出日志解决方案
  3. python中变量的命名和关键字和变量的命名规则
  4. javascript_11-函数面试题
  5. 人工智能史(来自wiki)
  6. [导入]+ADO.NET读书笔记系列 一+
  7. 【MFC开发(9)】列表控件List Box
  8. spring boot动力电池数据管理系统毕业设计源码301559
  9. Linux自动启动ssh方法
  10. 网站APP信息以及用户数据泄露排查方案
  11. EAS BOS数据库更新
  12. ppt如何替换其他mo ban_有没有一个 PPT 技巧让自己觉得人生都亮了?
  13. java缓存框架zookepper_Zookeeper分布式开源框架
  14. 0.0.0.0/0是什么意思
  15. CTO成长之路(一):优秀的程序员
  16. 旋转矩阵、欧拉角、四元数理论及其转换关系
  17. eplan好看的电缆图表_eplan,电缆图表,模板
  18. iOS - 手动下架的应用后快速恢复上架
  19. torch.mul()函数的使用
  20. 基于引擎开发HTML5游戏实战(二)---游戏剧本

热门文章

  1. C++通过系统版本号获取windows系统版本
  2. python基础字符串(二)
  3. java观察者模式学习
  4. 在matlab中安装命令窗口,安装完后发现命令窗口有这个?怎么回事?
  5. delete index mysql_为什么MySQL不建议delete删除数据「心得分享」
  6. 接二手java项目需要什么资料_师妹问双非本科如何进BAT,我告诉她Java后端路线...
  7. 浅析python中的main函数_浅的意思
  8. python多线程有用吗_当CPU利用率已经接近100%时,多线程有帮助吗?
  9. 安装activemq
  10. 域控计算机策略转换成用户策略,windows组策略实验-本地组策略和域控组策略