简单工厂设计模式

建立一个工厂类,对实现了同一接口的类进行实例的创建。简单工厂模式的实质是有由一个工厂类根据传入的参数动态的决定应该创建哪一个实现类。

/** 简单工厂设计模式* *///抽象接口水果
interface IFruit{//抽象方法void eat();
}//定义Apple类实现接口
class Apple implements IFruit{public void eat() {System.out.println("苹果需要削皮吃");}
}//定义Orange类实现接口
class Orange implements IFruit{public void eat() {System.out.println("橘子需要剥皮吃");}
}//定义工厂类,用来创建各实现类
//使用逻辑判断的方式实现
class Factory{public static IFruit getInstance(String name) {if(name.equals("Apple")) {//若判断和Apple相等,则产生Apple类的实例化对象return new Apple();}else if(name.equals("Orange")) {//若判断和Orange相等,则产生Orange类的实例化对象return new Orange();}else {//否则返回nullreturn null;}}
}
public class Test1{public static void main(String[] args) {IFruit iFruit1 = Factory.getInstance("Orange");IFruit iFruit2 = Factory.getInstance("Apple");iFruit1.eat();iFruit2.eat();}
}

通过上述代码我们实现了简单的工厂设计模式,但是当我们每新增一个实现类的时候就需要对工厂类进行修改,由此我们可以利用反射机制对其进行改良,使其实现在新增实现类的同时不需要对工厂类进行修改。

/** 反射机制改良简单工厂设计模式* *///抽象接口水果
interface IFruit{//抽象方法void eat();
}//定义Apple类实现接口
class Apple implements IFruit{public void eat() {System.out.println("苹果需要削皮吃");}
}//定义Orange类实现接口
class Orange implements IFruit{public void eat() {System.out.println("橘子需要剥皮吃");}
}
class WaterMelon implements IFruit{public void eat() {System.out.println("西瓜切着吃");}
}//定义工厂类,用来创建各实现类
//使用逻辑判断的方式实现
class Factory{private Factory() {}public static IFruit getInstance(String name) {IFruit iFruit = null;try {//获取Class对象Class<?> class1 = Class.forName(name);//创建实例化对象iFruit = (IFruit) class1.newInstance();} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {e.printStackTrace();}//若无此类,则返回nullreturn iFruit;}
}
public class Test1{public static void main(String[] args) {IFruit iFruit1 = Factory.getInstance("reflect.Apple");iFruit1.eat();IFruit iFruit2 = Factory.getInstance("reflect.Orange");iFruit2.eat();IFruit iFruit3 = Factory.getInstance("reflect.WaterMelon");iFruit3.eat();IFruit iFruit4 = Factory.getInstance("reflect.Appl");iFruit4.eat();}
}

设计模式——简单工厂设计模式相关推荐

  1. python设计模式名片_Python 设计模式 简单工厂(设计模式之禅)

    # -*- coding: utf-8 -*- # author: zhonghua # filename: pd_factory.py # create: 2016/3/28 # version: ...

  2. java设计模式--简单工厂设计模式SimpleFactoryPattern

    简单工厂模式     简单工程模式又称静态工厂方法,它的核心是类中包含一个静态方法,该方法用于根据参数来决定返回实现    同一接口不同类的实例. public class SimpleFactory ...

  3. 设计模式---简单工厂设计模式

    先定义一个抽象类Animal: 定义两个动物类继承这个类: 定义一个专门生产动物的工程类: 最后定义一个测试类: 按照这个动物工厂类,你会发现,如果动物一多的话,就需要写很多重复的方法,所以,就进行了 ...

  4. Java设计模式之简单工厂设计模式

    工厂设计模式 简单工厂设计模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂设计模式是工厂设计模式家族中最简单实用的模式 我们还是通过例子进行说明 实例场景:假设就是一个工厂生产phone和t ...

  5. JavaScript设计模式--简单工厂模式例子---XHR工厂

    JavaScript设计模式--简单工厂模式例子---XHR工厂 第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方 ...

  6. 三角形圆形创建与擦除java_设计模式---------------简单工厂模式

    设计模式---------------简单工厂模式 一.题目(Question) 使用简单工厂模式设计一个可以创建不同几何形状(如圆形.方形和三角形等)的绘图工具,每个几何图形都要有绘制draw()和 ...

  7. 设计模式——简单工厂

    设计模式--简单工厂 工厂角色: package designpattern.creation.simplefactory;/** * 此处的工厂简单写成一个类,因为(简单工厂的工厂)不会有继承或拓展 ...

  8. Spring常用设计模式--简单工厂模式

    本专栏内容参考自:咕泡学院Tom老师的<Spring5核心原理与30个类手写实战>,仅作个人学习记录使用,如有侵权,联系速删. 工厂模式的由来:   在现实生活中我们都知道,原始社会自给自 ...

  9. 设计模式—简单工厂模式

    前言 简单工厂模式是一种比较容易理解的设计模式 简单工厂模式介绍 在设计模式中,简单工厂模式可以理解为负责生产对象的一个类,当使用new 关键字创建一个对象时,此时该类就依赖于这个对象,也就是他们间的 ...

最新文章

  1. 【6】font-size 字体属性
  2. 北斗词卡(三):带你了解北斗相关的国际组织缩写
  3. SiftingAppender:将不同的线程记录到不同的日志文件中
  4. 充分利用UC berkeleys数据科学专业
  5. linux-权限操作,数字法
  6. Git学习总结(12)——多人开发 Git 分支管理详解
  7. 学生成绩abcde怎样划分_7月学考成绩出来啦!
  8. Android数据存储之SQLite数据库存储
  9. IIS经典模式与集成模式
  10. 高速计算机的应用领域是什么,计算机的应用领域
  11. java me教程_Java ME基础教程
  12. eclipse如何修改项目的jdr或jre版本
  13. Error opening zip file or JAR manifest missing
  14. 深入理解JS的delete
  15. 以太网卡、IB网卡的详细介绍以及区别分析
  16. 如何一周之内摸清一个行业?
  17. 名帖04 李阳冰 篆书《城隍庙碑》
  18. 黑色沙漠首发五职业PVP强度排行
  19. 什么是枚举?(个人理解)
  20. kafka中彻底删除topics

热门文章

  1. python该如何学习?如何用python开发网站
  2. 计算机房安全的环境条件,通信局(站)机房的环境条件要求
  3. 整合EasyExcel+Itext导出PDF和world
  4. 群晖docker安装chrome
  5. 如何安装python
  6. word公式自动排版最简单
  7. mysql性能调优 高可用_MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案...
  8. android+6.0钛备份,钛备份Titanium Backup官方下载6.0.1 安卓版
  9. Springdoc Swagger UI集成OAuth2认证
  10. 《雷达目标特性》 学习笔记(二)