实现工厂方法模式的技术要点如下:

· 工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这样在简单工厂模式里集中在工厂方法上的压力可以由工厂方法模式里不同的工厂子类来分担。

· 工厂方法模式由抽象工厂角色、具体工厂角色、抽象产品角色和具体产品角色组成。

· 抽象工厂角色是工厂方法模式的核心,它与应用程序无关,是具体工厂角色必须实现的接口或者必须继承的父类,它由抽象类或者接口来实现。

· 具体工厂角色含有与具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。抽象产品角色是具体产品继承的父类或者是实现的接口,一般由抽象类或者接口来实现。

package JAVA_Project_01_05;/*
实现工厂方法模式的技术要点如下:· 工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这样在简单工厂模式里集中在工厂方法上的压力可以由工厂方法模式里不同的工厂子类来分担。· 工厂方法模式由抽象工厂角色、具体工厂角色、抽象产品角色和具体产品角色组成。· 抽象工厂角色是工厂方法模式的核心,它与应用程序无关,是具体工厂角色必须实现的接口或者必须继承的父类,它由抽象类或者接口来实现。· 具体工厂角色含有与具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。抽象产品角色是具体产品继承的父类或者是实现的接口,一般由抽象类或者接口来实现。*/interface Tour {//旅游类void visit();//旅游方式}interface Visit {//具体旅游方式Tour visitStyle();}class GoAbroad implements Tour {//出国旅游public void visit() {//实现接口的方法System.out.println("咱们去国外旅游吧!");}}class Hangzhou implements Tour {//杭州旅游public void visit() {System.out.println("杭州风景优美,咱去那儿吧");}}class Home implements Tour {//在家public void visit() {System.out.println("唉,没有钱哪也去不了!");}}class GoAbroadVisit implements Visit {//返回出国旅游对象public Tour visitStyle() {return new GoAbroad();}}class HangZhouVisit implements Visit {//返回杭州旅游对象public Tour visitStyle() {return new Hangzhou();}}class HomeVisit implements Visit {//返回在家对象public Tour visitStyle() {return new Home();}}public class TextMethodFactory {//操作工厂方法模式的类public static void main(String[] args) throws Exception  {//Java程序主入口处try {Visit visit = new HangZhouVisit();//接口变量引用实现类对象Tour tour = visit.visitStyle();//调用方法返回旅游实例System.out.println("今年咱们去哪儿旅游呀?");tour.visit();//调用方法获得旅游方式} catch (Exception e){//捕获异常System.out.println("今年旅游计划取消?");} finally {//代码总被执行System.out.println("......");}}}/*
程序中定义两个接口、三个接口的实现类以及三个调用实现类的工厂类。可以看出使用工厂方法模式,使得对象的数量成倍增长。
当旅游(对象)的方式非常多时,会出现大量的与之对应的工厂对象,这并不是我们所希望的。因为如果不能避免这种情况,
可以考虑使用简单工厂模式与工厂方法模式相结合的方式来减少工厂类,即对于旅游(对象)方式类似的种类使用简单工厂模式。*/

JAVA旅游(工厂方法模式)相关推荐

  1. 《转》java设计模式--工厂方法模式(Factory Method)

    本文转自:http://www.cnblogs.com/archimedes/p/java-factory-method-pattern.html 工厂方法模式(别名:虚拟构造) 定义一个用于创建对象 ...

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

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

  3. JAVA设计模式 - 工厂方法模式

    工厂方法模式(Factory Pattern) 是一种创建型设计模式 , 它是Java中最常用的设计模式之一 . 1 . 工厂方法模式的定义 定义一个创建对象的接口 , 让子类决定实例化哪一个类 . ...

  4. Java设计模式-工厂方法模式的使用和介绍

    一.工厂方法模式简介 1.定义 工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorph ...

  5. Java设计模式--工厂方法模式

    工厂方法模式 1.工厂方法模式的概述 1.1工厂模式是简单工厂模式的延伸,符合开闭原则的基础上,还可以在增加新的具体产品对象时不需要对已有系统做任何修改. 1.2工厂方法模式:定义一个用于创建对象的接 ...

  6. java设计模式---工厂方法模式

    简单工厂模式的应用就是用来创建一个对象,简单工厂模式是将所有对象的初始化集于一个具体的工厂类来实现,这个工厂类负责所有产品的创建,但是这种创建只能创建单一的产品,如简单工厂模式里的ChickenFac ...

  7. java设计模式——工厂方法模式

    工厂方法模式:为工厂类定义了接口,使用多态来削弱工厂类的职责. * 将简单工厂创建对象的职责分担到子工厂类中,子工厂相互独立,互相不受影响. * 工厂方法模式也有他的局限性,当面对有复杂的树形结构的产 ...

  8. Java——设计模式(工厂方法模式)

    * A:工厂方法模式概述* 工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现.* 简单来说:先定义一个工厂,工厂里面有些方法,这些方法就是用来创建动物的,然 ...

  9. Java设计模式—工厂方法模式抽象工厂模式

    工厂方法模式与抽象工厂模式都是设计模式中重要而且常见的模式.       工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 通用类图如下: 在 ...

  10. java静态工厂方法模式_设计模式:简单工厂模式(静态工厂方法模式)

    简单工厂的构成包括三个角色: 1)抽象产品类 2)具体产品类(继承抽闲产品类) 3)工厂类(生产具体产品) 具体代码实现 1.抽象产品类 /** * 抽象类 */ public abstract cl ...

最新文章

  1. 1143 Lowest Common Ancestor(建树与不建两种思路)
  2. 大家一起和snailren学java-(一)对象导论
  3. 安装32位mysql报错_在CentOS中安装32位或64位MySql报错error: Failed dependencies解决办法...
  4. Linux下构建FTP服务器
  5. threejs中坐标系转换和实现物体跟随鼠标移动
  6. JAVA六大线程池详解
  7. matlab fopen函数的用法,matlab中关于fread函数的用法
  8. Cortex-M3学习笔记(一)
  9. python按综合、销量排序抓取100页的淘宝商品列表信息
  10. 删除卸载不干净的任务 vmware卸载不干净->服务清理 / 注册表清理
  11. 电话聊天狂人 (34 分)
  12. 快速排序算法的发明者霍尔
  13. python知道章节答案_智慧树知道Python数据分析与数据可视化答案,章节期末教程考试网课答案...
  14. BMC-web的介绍(一)
  15. 氟化硼二吡咯BDP581/591-ALK/NH2/COOH/NHS/N3/MAL/DBCO/Hz/Tz/amine衍生物
  16. Unity3D 罗技G29开发笔记
  17. 中国移动光猫桥接模式
  18. JavaScript随机生成字母、数字
  19. 改装智能锁,或是ofo“学习”摩拜的开始!
  20. Pytorch → ONNX → TensorRT

热门文章

  1. 使用for循环输出一个倒三角形。
  2. GrapeCity Documents for Word PDF或图像报告
  3. 快速查询QQ多少人对你设置了特别关心源码
  4. 秘密, 维基百科可以这样访问...(不包括中文版)
  5. Ada语言-标识符和注释
  6. left join用法
  7. 鱼与熊掌不可兼得!VS调试时拒绝访问的原因探究
  8. python loadlibrary_使用py2exe教程时出现LoadLibrary(pythondll)失败错误
  9. 关于微信公众平台服务器配置Token
  10. C++设置剪切板内容