工厂方法(Factory Method)
* 工厂方法把不同的产品放在实现了工厂接口的不同工厂类(FactoryAImpl,FactoryBImpl...)里面,
* 这样就算其中一个工厂类出了问题,其他工厂类也能正常工作,互相不受影响,
* 以后增加新产品,也只需要新增一个实现工厂接口工厂类,就能达到,不用修改已有的代码

代码解释:

1.创建产品接口Product,并创建2个产品子类android手机、Apple手机,都实现Product接口

public interface Product {}

public class Android implements Product{public Android() {System.out.println("生产一个Android手机...");}
}

public class Apple implements Product{public Apple() {System.out.println("生产一个Apple手机...");}
}

2.创建工厂接口,添加生产方法(返回值是Product),并针对每个产品,创建对应的工厂实现类

public interface Factory {/*** 生产一个产品* @return*/public Product process();
}

public class AndroidFactory implements Factory {@Overridepublic Product process() {return new Android();}
}

public class AppleFactory implements Factory {@Overridepublic Product process() {return new Apple();}
}

3.客户端调用:Test

public static void main(String[] args) {
//        Factory factory = new AppleFactory();//苹果工厂Factory factory = new AndroidFactory();//安卓工厂
        factory.process();}

这样,只需要修改new XXXFactory()就可以生产该工厂对应的产品

* 缺陷:
* 工厂方法为每种类型的产品(比如手机类、汽车类...)的 每个实现类(比如手机类[安卓工厂、苹果工厂] 汽车类[宝马工厂、奔驰工厂])创建一个对应的工厂类,当有数百种甚至上千种产品的时候,也必须要有对应的上百成千个工厂类,这就出现了传说的类爆炸,对于以后的维护来说,简直就是一场灾难.....

转载于:https://www.cnblogs.com/yangzhenlong/p/5152403.html

factory工厂模式之工厂方法FactoryMethod相关推荐

  1. 23种设计模式之简单工厂模式,工厂方法模式,抽象工厂模式详解

    工厂模式详解 1. 简单工厂模式 1.1 需求分析 1.2 使用传统方式实现 1.2.1 类图 1.2.2 代码实现 1.2.2.1 新建pizza抽象类 1.2.2.2 希腊披萨实现类 1.2.2. ...

  2. 工厂模式——简单工厂模式、工厂方法模式和抽象工厂模式

    1.简述 工厂模式包括简单工厂模式.工厂方法模式和抽象工厂模式,属于创建型模式. 2.不使用工厂模式 (1)类图分析 一个接口Computer,接口有两个实现类HP和Apple,同时有一个测试类Cli ...

  3. Java设计模式之 简单工厂模式和工厂方法实验报告书

    目录 Java设计模式之 1 简单工厂模式和工厂方法实验报告书 1 实验四:简单工厂模式和工厂方法 2 一.实验目的 2 二.实验内容 2 三.实验步骤 2 3.1简单工厂模式:女娲 2 3.2简单工 ...

  4. java 三种工厂模式(简单工厂+工厂方法+抽象工厂)

    一.简单工厂模式 概述   简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的 实例,被创建的实例通常都具有共同的父类.因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因 ...

  5. 设计模式之工厂类模式总结对比、简单工厂模式、工厂方法模式、抽象工厂模式、带反射的工厂模式、例子代码分析、最详细

    1. 题目 假设某公司同时用SqlServer.MySql数据库,即会切换两数据库(不同数据库的sql语句有些许差异),同时,两数据库里均有对Users.Departments表的操作(sql代码不一 ...

  6. 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂)

    园子里关于23种设计模式的博文已经可以说是成千上万.车载斗量.屯街塞巷.不计其数.数不胜数.摩肩接踵.汗牛充栋.车水马龙.门庭若市.琳琅满目直至让人眼花缭乱了.在这样的大环境下之所以来写设计模式类的博 ...

  7. 创建型模式:工厂模式(简单工厂+工厂方法+抽象工厂)

    一.引子 话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰).Bmw(宝马).Audi(奥迪)),还雇了司机为他开车.不过,爆发户坐车时总是这样:上Benz车后跟司机说"开奔驰车!& ...

  8. 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂) v阅读目录

    1楼留头头大神:http://www.cnblogs.com/toutou/p/4899388.html v阅读目录 v写在前面 v简单工厂模式 v工厂方法模式 v抽象工厂模式 v博客总结 v博客前言 ...

  9. python工厂模式 取代__init___浅析Python 简单工厂模式和工厂方法模式的优缺点

    前言 在<设计模式>一书中工厂模式提到了: 工厂方法模式(Factory Method) 抽象工厂模式 (Abstract Factory) 但是在实际过程中还有一种工厂模式经常被使用,那 ...

  10. JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

最新文章

  1. python自动翻译小工具_Python实现翻译小工具
  2. mysql ibd文件还原_Mysql 通过ibd文件恢复数据
  3. 分享:Orthanc 0.4.0 发布,DICOM 服务器
  4. php 模板使用,在PHP中使用模板的方法
  5. Python 异常处理 Python 基础教程 try..except
  6. Sophos将AI技术用于预防恶意IP的安全解决方案中
  7. 计组第一章(唐朔飞)——计算机系统概述章节总结
  8. Oracle ORA-27102的解决办法(out of memory)
  9. MFC 小知识总结五
  10. linux远程链接Windows桌面,linux远程桌面链接windows
  11. 概率论与数理统计(第四版) 课后习题解析 盛骤、谢式千 编|高等教育出版社 大学课后习题答案
  12. 计算机视觉教程3-1:全面详解图像边缘检测算法(附Python实战)
  13. 郑州调频广播频率表 转载
  14. 考研英语到底该如何复习?
  15. 闪讯无线助手-Android端闪讯破解路由器拨号实现原理
  16. linux内核page结构体的PG_referenced和PG_active标志
  17. iOS - 解决Warning: Attempt to present which is already presenting
  18. openstack环境搭建之六horizon配置
  19. 解读手机拍照的各个参数(延时摄影)
  20. 启动此程序因为计算机丢失msvcr110,win7系统提示无法启动此程序计算机中丢失MSVCR110.dll的解决方法...

热门文章

  1. shell 批量修改文件名字
  2. 手机web——自适应网页设计(html/css控制)
  3. 阶段3 2.Spring_07.银行转账案例_5 编写业务层和持久层事务控制代码并配置spring的ioc...
  4. 课后作业3:软件与用户体验调查与分析
  5. ServiceFabric极简文档-1.2 硬件环境.md
  6. TCP客户端与服务器的实现
  7. Java 类和Static关键字
  8. Scrapy 1.4 文档 02 安装指南
  9. 关于erlang的-run 的启动参数
  10. POJ 1141 Brackets Sequence