当前位置: 首页 > news >正文

规约模式:优雅设计与灵活应用

引言:

        规约模式是软件开发中的重要设计原则,它们提供了一种优雅的、灵活的方式来构建高质量的系统。本文将通过实例演示规约模式的具体应用,带你了解这些原则的实战价值。

一、开放封闭原则

// 图形接口
public interface Shape {void draw();
}// 圆形类
public class Circle implements Shape {@Overridepublic void draw() {System.out.println("Drawing a circle.");}
}// 矩形类
public class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("Drawing a rectangle.");}
}// 绘图应用类
public class DrawingApp {public void drawShape(Shape shape) {shape.draw();}
}

在上述代码中,我们定义了一个图形接口 Shape,并为每种图形类型创建了实现类 CircleRectangle。在绘图应用类 DrawingApp 中,我们可以调用 drawShape 方法来绘制不同类型的图形,而无需修改已有代码。

二、单一职责原则

// 文件上传类
public class FileUploader {public void uploadFile(File file) {// 实现文件上传逻辑}
}// 文件保存类
public class FileSaver {public void saveFile(File file) {// 实现文件保存逻辑}
}

在上述代码中,我们将文件上传和文件保存两个功能分别封装在了不同的类中,每个类只负责单一职责。这样做有助于代码的复用和维护,使系统更加健壮和灵活。

三、依赖倒置原则

// 通知接口
public interface Notification {void sendNotification(String message);
}// 邮件通知类
public class EmailNotification implements Notification {@Overridepublic void sendNotification(String message) {// 实现发送邮件通知的逻辑}
}// 短信通知类
public class SMSNotification implements Notification {@Overridepublic void sendNotification(String message) {// 实现发送短信通知的逻辑}
}// 订单处理类
public class OrderProcessor {private final Notification notification;public OrderProcessor(Notification notification) {this.notification = notification;}public void processOrder(Order order) {// 处理订单逻辑notification.sendNotification("Your order has been processed.");}
}

在上述代码中,我们使用依赖倒置原则来实现订单处理系统的通知功能。订单处理类 OrderProcessor 依赖于通知接口 Notification 而不是具体的实现类,这样可以轻松切换不同的通知方式,而不影响订单处理逻辑。

四、迪米特法则

考虑一个图书馆管理系统,图书馆管理员需要查看读者的借阅信息。根据迪米特法则,我们应该尽量减少图书馆管理员和读者之间的直接交互。

public class Reader {private String name;private List<Book> borrowedBooks;// getter and setter methods
}public class Library {private List<Reader> readers;public List<Book> getBorrowedBooks(Reader reader) {return reader.getBorrowedBooks();}
}

五、接口隔离原则

假设我们有一个权限管理系统,其中包含管理员、普通用户和游客三种角色。为了遵循接口隔离原则,我们应该为每种角色创建独立的接口,只包含其所需的方法。

public interface Admin {void manageUsers();
}public interface User {void viewProfile();
}public interface Guest {void viewHomePage();
}public class AdminUser implements Admin, User {// 实现管理员和用户的接口方法
}public class RegularUser implements User {// 实现普通用户的接口方法
}public class GuestUser implements Guest {// 实现游客的接口方法
}

这样做有助于避免不必要的接口依赖,提高系统的灵活性和可扩展性。

http://www.lryc.cn/news/103212.html

相关文章:

  • Ubuntu Server版 之 apache系列 安装、重启、开启,版本查看
  • Redis学习路线(4)—— Redis实现项目缓存
  • 【Unity造轮子】实现一个类csgo的武器轮盘功能
  • 代码随想录算法训练营第三十天 | 单调栈系列复习
  • redis数据未到过期时间被删除
  • 32.选择器
  • Linux--验证命令行上运行的程序的父进程是bash
  • MySQL数据库关于表的一系列操作
  • Spring基于注解管理bean及全注解开发
  • QtC++ 技术分析3 - IOStream
  • 2023年Q2京东环境电器市场数据分析(京东数据产品)
  • TCP/UDP的首部
  • Kubernetes(K8s)从入门到精通系列之四:K8s的基本概念和术语之集群类
  • 黑马头条---day1
  • 【序列化工具JdkSerialize和Protostuff】
  • C++ 多线程编程导论(下)
  • Java并发系列之一:JVM线程模型
  • 容灾独家技术揭秘:HyperBDR无主机数据同步技术
  • FANUC机器人SRVO-050碰撞检测报警和SRVO-053干扰值过大故障报警总结
  • 微信如何提高回复信息速度?
  • 模拟Stevens Lewis描述的小型飞机纵向动力学的非线性动态反演控制器研究(Matlab代码实现)
  • 【C++从0到王者】第十二站:vector基本使用
  • 了解Unity编辑器之组件篇Miscellaneous(九)
  • 自动驾驶小车
  • 机器学习深度学习——多层感知机的从零开始实现
  • Redis的基本使用命令
  • Ts入门到放弃
  • 黑客技术(网络安全)学习笔记
  • Cloud Kernel SIG 月度动态:支持龙芯和申威架构,合入两个内存新特性
  • IDEA中连接虚拟机 管理Docker