一篇文章带你入门java模板模式

这篇文章主要为大家详细介绍了java模板模式的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一篇文章带你入门java模板模式,久久派带你了解更多相关信息。

目录
  • Java设计模式-模板模式
    • 什么是模板模式?
  • 总结:

    Java设计模式-模板模式

    什么是模板模式?

    模板模式,顾名思义,就是通过模板拓印的方式。

    定义模板,就是定义框架、结构、原型。定义一个我们共同遵守的约定。

    定义模板,我们的剩余工作就是对其进行充实、丰润,完善它的不足之处。

    定义模板采用抽象类来定义,公共的结构化逻辑需要在抽象类中完成,只将非公共的部分逻辑抽象成抽象方法,留待子类充实实现。

    下面首先通过一个简单的程序来分析一下,例如:现在有三种类型:猪、机器人、人;

    • 猪具备三种功能:吃、睡、跑
    • 机器人又两个功能:吃、工作
    • 人具备四个功能:吃、睡、跑、工作。

    现在就要求设计一个程序,可以让这三类不同的类型,进行工作。现在给出的三个类实际上并没有任何联系

    UML图:

    一篇文章带你入门java模板模式

    源代码:

    abstract class Action{	public static final int EAT = 1;	public static final int SLEEP = 5;	public static final int RUN = 20;	public static final int WORK = 30;	public abstract void eat();	public abstract void sleep();	public abstract void run();	public abstract void work();	public void order(int flag){		switch(flag){			case EAT:				this.eat();				break;			case SLEEP:				this.sleep();				break;			case RUN:				this.run();				break;			case WORK:				this.work();				break;			case EAT+WORK:				this.eat();				this.work();				break;			case EAT+WORK+RUN+SLEEP:				this.eat();				this.sleep();				this.run();				this.work();				break;			case EAT+RUN+SLEEP:				this.eat();				this.sleep();				this.run();				break;		}	}}class Person extends Action{	public void eat(){		System.out.print(\"人吃,\");	}	public void sleep(){		System.out.print(\"人睡,\");	}	public void run(){		System.out.print(\"人跑,\");	}	public void work(){		System.out.print(\"人工作,\");	}}class Pig extends Action{	public void eat(){		System.out.print(\"猪吃,\");	}	public void sleep(){		System.out.print(\"猪睡,\");	}	public void run(){		System.out.print(\"猪跑,\");	}	public void work(){}}class Robet extends Action{	public void eat(){		System.out.print(\"机器人吃,\");	}	public void sleep(){}	public void run(){}	public void work(){		System.out.print(\"机器人工作,\");	}}public class MoBan{	public static void main(String args[]){	/*	人吃,人睡,人跑,人工作,猪吃,猪睡,猪跑,机器人吃,机器人工作,	*/		Action ren = new Person();		ren.order(Action.EAT+Action.SLEEP+Action.RUN+Action.WORK);		System.out.println();		Action pig = new Pig();		pig.order(Action.EAT+Action.SLEEP+Action.RUN);		System.out.println();		Action robet = new Robet();		robet.order(Action.EAT+Action.WORK);	}}

    实际上通过此程序的定义结构你可以清楚的发现一个问题:

    • 抽象类在实际的使用过程之中会定义一些固化的模式,它只能接受几种特定的指令;但是每种指定的具体实现由子类负责完成,我们父类只是做了方法的约定。

    总结:

    抽象类虽然定义了子类必须做的事情,但是抽象类依然会存在有单继承的局限

    抽象类的使用必须通过子类进行实例化的获取。

    模板模式的关键点:

    使用抽象类定义模板类,并在其中定义所有的基本方法、模板方法,钩子方法,不限数量,以实现功能逻辑为主。其中基本方法使用final修饰,其中要调用基本方法和钩子方法,基本方法和钩子方法可以使用protected修饰,表明可被子类修改。

    定义实现抽象类的子类,重写其中的模板方法,甚至钩子方法,完善具体的逻辑。

    使用场景: 在多个子类中拥有相同的方法,而且逻辑相同时,可以将这些方法抽出来放到一个模板抽象类中。程序主框架相同,细节不同的情况下,也可以使用模板方法。

    本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注趣讯吧的更多内容!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/11350.html

    (0)
    nan
    上一篇 2021-08-09
    下一篇 2021-08-09

    相关推荐

    • 兼职骑手一个月多少钱,兼职骑手工资怎么结算

      现如今,外卖行业的火爆程度让众多投资者看中了其中的商机,对于大多数上班比较闲的人而言,基本上下班时间是很多的,不少人也会选择成为一名兼职骑手,那么兼职骑手一个月多少钱?兼职骑手工资怎么结算?思埠网为您详细解答!一、兼职骑手一个月多少钱饿了

      2021-12-31
      0
    • 苹果不保修!MacBook屏幕无故碎裂

      近日,外媒9to5 Mac报道,有部分苹果用户在Apple社区论坛发帖称,他们在正常使用苹果M1 MacBook的时候屏幕会出现裂缝,其中包括搭载M1的MacBook Pro和MacBook Air。目前声称MacBook无故破裂的

      2021-08-02
      0
    • 销售假酒罪刑事标准

      法律问题分析:如果销售假酒构成犯罪的,可以按生产、销售伪劣产品罪追究刑事责任,大致分为四种情况,第一种情况为销售假酒的销售金额五万元以上不满二十万元的,处二年以下有期徒刑或者拘役,并处或者单处销售金额百分之五十以上二倍以下罚金;第二种情况为销售假酒的

      2022-01-08
      0
    • 6.28-8.98万元 本田两款摩托价格公布:百公里耗油4.26升赶超汽车 !

      5月19日,在2023北京国际摩托车展览会上,本田公布了旗下两款新车的售价,其中CL500售价6.28万元,而CB750售价更是高达8.98万元。CL500定位于复古攀爬车型,并使用了CM500体用款发动机,所不同的是,CL500在设计方面更具个性化,提供哑光绿、曜夜黑两种车身颜色。配备LED大灯、

      热点头条 2023-05-19
      0
    • 热狗不戴眼镜的照片?热狗为什么不摘墨镜?热狗的眼睛有问题吗

      《披荆斩棘的哥哥》这档综艺非常的火热,其中热狗也受到了很多网友的关注,不得不说热狗的RAP真的没话讲,非常炸,每次墨镜上脸非常炫酷。不过大家有见过热狗的样子吗?每次热狗出场都戴墨镜,热狗为什么不摘墨镜呢?热狗的眼睛有问题吗?下面就跟趣讯吧小

      2021-09-10
      0
    • 苹果2代平板电脑多少钱(苹果2代平板电脑推荐)

      提起平板电脑,大家最先想到的应该就是苹果的iPad系列了,从2010年第一款iPad诞生至今已经走过了11个年头,可以说正是iPad的出现带动了平板电脑这一产品的发展。在平板电脑这个领域,iPad一直是引领者和发展者!今天,就让我们来一起回顾一下这个

      2022-01-10 热点头条
      0

    发表回复

    登录后才能评论