简单工厂模式又称为静态工厂模式,实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

其实就是将一个具体类的实例化交给一个静态工厂方法来执行,它不属于GOF的23种设计模式,但现实中却经常会用到,而且思想也非常简单。

总结;定义一个接口,多个实现类,一个工厂方法

public interface Human {
void eat();
void sleep();
}

 

public class WhiteHuman implements Human{
@Override
public void eat() {
System.out.println("白种人吃饭");
} @Override
public void sleep() {
System.out.println("白种人睡觉");
}
}

  

public class YellowHuman implements Human{
@Override
public void eat() {
System.out.println("黄种人吃饭");
} @Override
public void sleep() {
System.out.println("黄种人睡觉");
}
}

  

public class HumanFactory {
public static Human createHuman(Class tClass) {
try {
return (Human) Class.forName(tClass.getName()).newInstance();
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} }
}

  测试:

 

最新文章

  1. CentOS安装Redis详细教程
  2. 60个有用CSS代码片段
  3. my_strstr()
  4. Linux workqueue工作原理 【转】
  5. docker学习(二)
  6. jquery的end(),addBack()方法example
  7. Json工具类 - JsonUtils.java
  8. Android Canvas.drawText方法中的坐标参数的正确解释
  9. HibernateTemplate常用方法总结
  10. Equals 和==
  11. 字符串匹配之boyer-Moore算法
  12. Android开发——fragment中数据传递与刷新UI(更改控件)
  13. POJ1847 Tram
  14. Centos6.5部署vsftpd+mysql认证
  15. python3学习笔记12(变量作用域)
  16. sql语句查询结果排序
  17. 解决C3P0在Linux下Failed to get local InetAddress for VMID问题
  18. 20155211 网络对抗 Exp9 Web安全基础实践
  19. 运动规划 (Motion Planning): MoveIt! 与 OMPL---44
  20. opencv-原图基础上添加指定颜色

热门文章

  1. VMware虚拟机的简单安装和配置
  2. AEDR8300:光电编码程序构思
  3. 使用Hook拦截sendto函数解决虚拟局域网部分游戏联机找不到房间的问题——以文明6为例
  4. HGAME2023_WP_WEEK2
  5. JZOJ 100019.A
  6. JZOJ 2483. 【GDKOI 2021提高组DAY1】回文(palindrome)
  7. C#泛型接口请求封装类
  8. 三天吃透Redis面试八股文
  9. js高德地图添加点Marker,添加线段Polyline,添加一个区域Polygon(面)
  10. pat乙级 1021个位数统计