模版方法模式旅游签证

题目

想要出国旅游,基本都要经过以下几个步骤:办护照、办签证、买票、到达。

但是目前有些国家对于中国人是免签的或者是落地签,所以去不同的国家旅行时的具体步骤会有所不同

请用模板方法模式实现上述内容。(提示:免签时可以采用钩子方法)。

代码

TravelAbroad.java

package TemplatePattern1;public abstract class TravelAbroad {String name;//客户String country;//国家int days;//签证时间public TravelAbroad(String name, String country, int days) {this.name = name;this.country = country;this.days = days;}public final void Process(){passport();if (hook()){Visa();}ticket();arrive();}//钩子方法public boolean hook(){return true;}//办理护照public final void passport(){System.out.println(name+"已办理"+country+"护照");}//买票public final void ticket(){System.out.println(name+"已买好到达"+country+"的机票");}//到达public final void arrive(){System.out.println(name+"已到达"+country);}//办理签证public abstract void Visa();
}

LandVisa.java

package TemplatePattern1;public class LandVisa extends TravelAbroad{public LandVisa(String name, String country, int days) {super(name, country, days);}@Overridepublic void Visa() {System.out.println(name+"已办理去往"+country+"的签证,签证期为"+days+"天");}
}

NeedVisa.java

package TemplatePattern1;public class NeedVisa extends TravelAbroad{public NeedVisa(String name, String country, int days) {super(name, country, days);}@Overridepublic void Visa() {System.out.println(name+"已办理去往"+country+"的签证,签证期为"+days+"天");}
}

NoVisa.java

package TemplatePattern1;public class NoVisa extends TravelAbroad{public NoVisa(String name, String country, int days) {super(name, country, days);}@Overridepublic void Visa() {System.out.println(country+"免签,签证期为"+days+"天");}
}

运行截图

UML类图

模版方法模式--旅游签证相关推荐

  1. 模版方法模式/Template Method

    模版方法模式/Template Method 意图/适用场景: 模版方法模式其实是一种应用很广泛的模式,特别是在使用抽象类的时候. 模版方法模式中必然有一个核心的抽象类,不能是接口.声明一些抽象方法, ...

  2. Java设计模式笔记(4)模版方法模式

    模版方法模式:定义一个操作中的算法的框架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤. 抽象模版的方法分为两类: 1. 基本方法也叫基本操作,是由子类实现的方 ...

  3. 模版方法模式 Template Method Pattern — 穷人和富人的不同婚恋历程

    说明:我也是初学者,希望大家能提出宝贵意见.另外转载请注明作者左洸和出处博客园,毕竟花费了很长时间才完成. 不管是穷人还是富人,都要谈恋爱结婚,而且每个人的婚恋经历,步骤大体上都是一样的,比如说:见面 ...

  4. 设计模式 模版方法模式 展现程序员的一天

    继续设计模式~ 模版方法模式 老套路,先看下定义:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤. 简单看下定义,模版方法定义了一个算 ...

  5. C++ 模版方法模式

    简述 模版方法模式(Template Method Pattern)定义一个操作中算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. | 版 ...

  6. 设计模式——模版方法模式详解(论沉迷LOL对学生的危害)

    0. 前言 写在最前面,本人的设计模式类博文,建议先看博文前半部分的理论介绍,再看后半部分的实例分析,最后再返回来复习一遍理论介绍,这时候你就会发现我在重点处标红的用心,对于帮助你理解设计模式有奇效哦 ...

  7. 详解设计模式:模版方法模式

    模板方法模式(Template Method Pattern)也被称为模板模式(Template Pattern),是在 GoF 23 种设计模式中定义了的行为型模式. 模板方法模式 定义一个操作中的 ...

  8. 设计模式(九)模版方法模式

    相关文章 设计模式(一)设计六大原则 设计模式(二)单例模式的七种写法 设计模式(三)建造者模式 设计模式(四)简单工厂模式 设计模式(五)观察者模式 设计模式(六)代理模式 设计模式(七)装饰模式 ...

  9. Java设计模式——模版方法模式

    1.简介 Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.Template ...

最新文章

  1. vlan配置实例详解_【精品网络干货】二层MSTP防环技术详解
  2. golang存储密码
  3. Fedora 31 将被“砍掉”或推迟更久发布,但和 IBM 无关
  4. 阿里云服务器如何安装memcached
  5. devops 应用_如何在DevOps中应用系统思考
  6. NLP文本分类大杀器:PET范式
  7. iOS笔记(一)GCD多线程:信号量和条件锁
  8. nginx重定向规则入门
  9. 机器学习算法基础1-数据的特征工程
  10. 逃脱只会部署集群系列 —— jenkins和gitlab的部署联动推送
  11. 支付宝小程序H5域名配置
  12. js如何获取滚动条的高度
  13. Centos7开机自启动手册
  14. python播放音乐同步歌词范晓萱_同步_范晓萱_高音质在线试听_同步歌词|歌曲下载_酷狗音乐...
  15. 清华大学计算机系2020年夏令营,2018年清华大学全校50个保研夏令营通知信息大汇总...
  16. shell之cut ---sed---awk--sort
  17. 服务器ibms管理系统,IBMS智能化管理系统
  18. 穷爸爸和富爸爸读后感
  19. matlab导出图片背景_matlab美化图片之添加背景颜色
  20. photoshop插件-开发环境搭建

热门文章

  1. Python3爬取前程无忧数据分析工作并存储到MySQL
  2. Photoshop学习(十六):使用矢量蒙版
  3. 动态代理[JDK]机制解析
  4. ABAP 使用Smartforms发送HTML邮件
  5. PCL 点云配准衡量指标
  6. 简单总结下目前市场常见的理财产品
  7. 从0到1快速了解netty长连接网关协议
  8. 【实时渲染】屏幕空间特效和多边形技术
  9. 广东省中医院微信公众号医保个账支付功能
  10. [Lintcode]142. O(1) Check Power of 2