抽象类应用模板方法模式和接口应用之策略设计模式
应用模板方法(抽象类)
模板方法模式(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();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!