抽象类应用模板方法模式和接口应用之策略设计模式

简介: 抽象类应用模板方法模式和接口应用之策略设计模式

应用模板方法(抽象类)

模板方法模式(Templete Method):定义一个操作中的算法的骨架,而将一些可变部分的实现延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤。

例如:抽象类只去做一个权限检查的事情,至于其他事情,则交给子类去做

代码实现:

public class Test7 {
    public static void main(String[] args){
        UserManager userManager = new UserManager();
        userManager.check("admin","add");
    }
}
abstract class BaseManager{
    public void check(String user,String method){
        if("admin".equals(user)){
            execute(method);
        }else{
            System.out.println("你没有操作权限,请联系管理员");
        }
    }
    public abstract void execute(String method);
}
class UserManager extends BaseManager{
    @Override
    public void execute(String method){
        if("add".equals(method)){
            System.out.println("你执行了添加操作");
        }else if("del".equals(method)){
            System.out.println("你执行了删除操作");
        }
    }
}

运行结果:

你执行了添加操作

策略设计(接口应用)

策略模式(Strategy Pattern):定义了一些列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于它的客户应用可独立发生变化

定义一个接口:

public interface Isave{
  void save();
}

两个实现类:

public class NetIsave implements Isave{
  @Override
  public void save() {
    System.out.println("保存在网络上");
  }
}
public class HomeIsave implements Isave{
  @Override
  public void save() {
    System.out.println("保存在家里");
  }
}

定义一个抽象类进行封装:

public abstract class BaseIsave{
  private Isave isave;
  public void setIsave(Isave isave) {
    this.isave= isave;
  }
  public Isave getIsave() {
    return this.getIsave();
  }
  public void add() {
    System.out.println("检查数据安全性");
    isave.save();
  }
}

我们需要使用,只需要去继承这个抽象类即可:

public class User extends BaseIsave{
}

测试:

public class Test4 {
  public static void main(String[] args) {
        // 创建对象
    BaseIsave isave = new User();
        // 传入参数(接口的实例化对象)
    isave.setIsave(new HomeIsave());
        // 执行操作
    isave.add();
  }
}


目录
相关文章
|
15天前
|
设计模式 Java 数据库连接
Java中的设计模式在实际项目中的应用
Java中的设计模式在实际项目中的应用
|
24天前
|
设计模式 Java
设计模式在Java项目中的实际应用
设计模式在Java项目中的实际应用
|
23天前
|
设计模式 JavaScript 算法
js设计模式【详解】—— 模板方法模式
js设计模式【详解】—— 模板方法模式
28 6
|
28天前
|
设计模式 数据库连接 PHP
PHP中的面向对象编程与设计模式应用
传统的PHP编程模式在面向对象的趋势下逐渐演进,本文探讨了面向对象编程在PHP中的应用,并深入分析了常用的设计模式如何优化代码结构和可维护性。
|
1月前
|
设计模式 算法 搜索推荐
抽象类与接口:设计模式的基石
在面向对象设计中,抽象类和接口是多态和封装的核心。抽象类是不能实例化的类,提供子类共享的实现和抽象方法,确保子类间的共性。接口仅定义方法签名,强制实现类提供具体实现,促进松耦合。两者在实现方式、继承和设计目的上有所不同,常用于工厂、策略等设计模式,如策略模式中通过接口动态选择算法,增强了代码灵活性。【6月更文挑战第16天】
36 8
|
14天前
|
设计模式 存储 缓存
Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
18 0
|
14天前
|
设计模式 缓存 安全
Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
13 0
|
14天前
|
设计模式 安全 Java
Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
24 0
|
22天前
|
设计模式 Java 开发者
Java中设计模式的应用与实现详解
Java中设计模式的应用与实现详解
|
22天前
|
设计模式 Java
设计模式在Java项目中的实际应用
设计模式在Java项目中的实际应用