Java模板模式

描述

运用 Java 抽象类,使用 模板模式 的思想设计

题目

某公司的系统中需要记录两类员工:

员工类:

​ 属性:工号、姓名、年龄

​ 行为:发布通知

经理类:

​ 属性:工号、姓名、年龄、年终奖额

​ 行为:发布通知

任何员工发布 “通知” 都统一使用以下格式:

通知:

​ xxxxxxxxx

​ xxxxxxxxx

​ 嗨客科技有限公司

题目解决思路

  1. 分析题目可以看出两者共性属性为工号、姓名、年龄。
  2. 两者都具有发布通知 方法 ,方法的格式必须一致,但方法内容有所不同。

代码具体实现

通知类代码:

public abstract class Notice { // 属性 private String id; private String name; private int age; // 无参构造 public Notice() { } // 全参构造 public Notice(String id, String name, int age) { this.id = id; this.name = name; this.age = age; } // 展示信息 public void showInfo(){ System.out.println("人员信息:"); System.out.println("编号:" + id + " 姓名:" + name + " 年龄:" + age); } // 发布通告 public void notice(){ System.out.println("通知:"); send(); System.out.println(" 嗨客科技有限公司\n"); } public abstract void send(); }

员工类代码:

public class Staff extends Notice { // 无参构造 public Staff() { } // 全参构造 public Staff(String id, String name, int age) { super(id, name, age); } // 发通知方法 @Override public void send() { System.out.println(" 员工通知"); } }

经理类代码:

public class Manager extends Notice{ // 无参构造 public Manager() { } // 全参构造 public Manager(String id, String name, int age) { super(id, name, age); } // 发通知方法 @Override public void send() { System.out.println(" 经理通知"); } }

测试类代码:

public class Test { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)\n"); // 员工 Staff sf = new Staff("01","张三",30); sf.showInfo(); sf.notice(); // 经理 Manager m = new Manager("02","李经理",35); m.showInfo(); m.notice(); } }

运行结果如下图:

02_java模板模式.png

以上案例运用 Java 抽象类,使用模板模式的思想设计类。