通过封装相同的代码,给外部提供一个接口,外部通过实现这个接口,写不同的业务逻辑
abstract class Test{ //业务逻辑代码 public void test3(){ //一下代码都是重复的 int a = 1; if(true){ System.out.println("相同代码"); } if (true){ System.out.println("相同代码"); } //核心的代码 if (true){ print(a); } } public abstract void print(int a); } public class UserDao extends Test{ public static void main(String[] args) { UserDao userDao = new UserDao(); userDao.test3(); } public void print(int a) { //实现接口(重写) System.out.println("业务逻辑代码"); System.out.println(a); } }
或者使用传递一个类,调用类中特定的方法(本质上调用方法)
abstract class Test{ //业务逻辑代码 public void test3(Function function){ //一下代码都是重复的 int a = 1; if(true){ System.out.println("相同代码"); } if (true){ System.out.println("相同代码"); } //核心的代码 if (true){ function.print(a); } } } public class UserDao extends Test{ public static void main(String[] args) { UserDao userDao = new UserDao(); userDao.test3(new Function()); } } class Function{ public void print(int a){ System.out.println(a); } }