简单的接口和抽象类实现模板设计模式
一、先使用接口实现模板设计模式
1、先写模板模式中大家公共的方法,将该方法放到一个接口里:
public interface MyPublic {public void step02();
}
2、写模板类(step01和step03是公共的不变的方法,step02是公共各自需要实现改变的方法,也就需要传入一个实现类对象)
public class MyTemplate {public void step01() {System.out.println("step01().......");}public void step02(MyPublic myPublic) {myPublic.step02();}public void step03() {System.out.println("step03().......");}public void step(MyPublic myPublic) {this.step01();this.step02(myPublic);this.step03();}
}
3、实现公共的各自实现的方法的接口(哈哈,绕口不,就是实现第一步里MyPublic接口)
public class ImplementsPublic implements MyPublic{@Overridepublic void step02() {System.out.println("step02()~~~~~~~");}
}
4、编写各自的类(将模板类作为属性写入)
public class MyStep {MyTemplate myTemplate;public MyTemplate getMyTemplate() {return myTemplate;}public void setMyTemplate(MyTemplate myTemplate) {this.myTemplate = myTemplate;}public static void main(String[] args) {MyStep myStep = new MyStep(); //new本类的对象myStep.setMyTemplate(new MyTemplate()); //给本类的myTemplate属性实例化myStep.getMyTemplate().step(new ImplementsPublic()); //调用本属性模板里step方法并传入接口以实现的类,按照模板中step方法中的步骤执行 }
}
5、结果
step01().......
step02()~~~~~~~
step03().......
二、使用抽象类实现模板设计模式
1、将公共的一致的方法和需要子类更改的抽象的方法写道一个抽象类里
public abstract class MyTemplate {public abstract void step01();public void step02(){System.out.println("MyTemplate.step02()");}public void step03(){System.out.println("MyTemplate.step03()");}public void step(){step01();step02();step03(); }
}
2、写第一个实现类附加打印的结果
public class Impl01 extends MyTemplate{@Overridepublic void step01() {System.out.println("Impl01.step01()");}public static void main(String[] args) {Impl01 impl01 = new Impl01();impl01.step();}
}Impl01.step01()
MyTemplate.step02()
MyTemplate.step03()
3、写第二个实现类附加打印的结果
public class Impl02 extends MyTemplate{@Overridepublic void step01() {System.out.println("Impl02.step01()");}public static void main(String[] args) {Impl02 impl02 = new Impl02();impl02.step();}
}Impl02.step01()
MyTemplate.step02()
MyTemplate.step03()
这样就实现了由抽象的父类作为模板,里面包含了变与不变的方法,需要改变的方法就写成抽象类,交给继承的子类来完成实现,不变的方法就直接书写方法体,交给子类继承,而且方法的具体执行流程也写在了模板父类里,这样,各个子类一是要实现需要按照自己的步骤执行抽象方法,并按照父类的执行流程执行即可,这样便体现了模板方法设计模式。
简单的接口和抽象类实现模板设计模式相关推荐
- 继承、抽象类、模板设计模式、_nal关键字
继承.抽象类.模板设计模式.final关键字 今日内容介绍 1. 面向对象基础知识回顾* 如何定义类public class Student{}* 如何创建类的对象Student s = new Stu ...
- java 抽象属性 设计_Java 抽象类与模板设计模式详解
抽象类 抽象类是为了方法覆写而提供的类结构,因为其无法自身直接进行对象实例化操作,所以在实际应用中,抽象类主要目的是进行过程操作使用,当你要使用抽象类进行开发的时候,往往都是在你设计中需要解决类继承问 ...
- 0047 抽象类、模板设计模式
/*抽象类1.用abstract关键字来修饰一个类时,这个类就叫抽象类访问修饰符 abstract 类名{}2.用abstract关键字来修饰一个方法时,这个方法就是抽象方法访问修饰符 abstr ...
- java—基于抽象类的模板设计模式(星巴克咖啡冲泡法的优化及扩展)
基于抽象类的模板设计模式 模板设计模式: 在一个方法中定义一个算法的骨架(在父类中定义),将一些步骤延迟到子类. 模板方法使得子类可以在不改变算法的情况下,重新定义算法的某些步骤. 在父类中对相同的方 ...
- Java神秘的抽象类,模板设计模式
Java神秘的抽象类,模板设计模式 1.概述 2.基本使用 3.一些细节 4.抽象类的最佳实践 - 模板设计模式 1.概述 抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充. 一 ...
- 抽象类及模板设计模式
7.抽象类 1.定义: 1.abstract +class+类名 2.作用: 1.当父类的方法需要声明,但具体的实现通过子类重写完成时,可以将父类声明为抽象类 3.细节: 1.当一个类中有抽象方法时, ...
- 【26天高效学完Java编程】Day11:继承、抽象类、模板设计模式详解
本专栏将从基础开始,循序渐进,由浅入深讲解Java的基本使用,希望大家都能够从中有所收获,也请大家多多支持. 专栏地址:26天高效学习Java编程 相关软件地址:软件地址 所有代码地址:代码地址 如果 ...
- 01-复习回顾、继承、抽象类、模板设计模式
day01[复习回顾.继承.抽象类模板设计模式] 今日内容 面向对象复习 类的创建------>必须掌握 对象的创建和使用------>必须掌握 匿名对象 继承 如何继承-继承的格式--- ...
- 面向对象之继承,抽象类、模板设计模式
第1章 复习回顾 1.1 类和对象 定义一个类 格式: 修饰符 class 类名{//类中的五大成分.1.成员变量2.构造方法3.成员方法4.内部类5.代码块 } 代码: public class S ...
最新文章
- nubby mysql_mysql修改用户密码
- 选择HttpHandler还是HttpModule?
- 基于Nginx的负载均衡
- 【Mysql Docker】备份 docker mysql 脚本
- 20189211 《网络攻防》第五周作业
- 计算机软件技能高考好考么,湖北技能高考:上不了本科,优先考虑这4所一档高职...
- 使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据
- 技术动态 | 针对复杂问题的知识图谱问答最新进展
- Elasticsearch】Elasticsearch 25 个必知必会的默认值
- .NET Remoting 入门实例
- Qt之高DPI显示器(二) - 自适配解决方案分析
- 开源网站管理工具—Altman
- mysql添加外键失败
- 动态规划之01背包问题(含代码C)
- [BZOJ4300]绝世好题
- xp系统怎么关闭wmi服务器,教你win10系统wmi服务器怎么关闭
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫
- 关于from scipy.misc import comb ImportError: cannot import name 'comb'的问题
- 项目开发成本高周期长 数维图低代码平台解决行业痛点
- 读书笔记丨《数据产品经理修炼手册:从零基础到大数据产品实践》丨DAY4