Repository Pattern 把所有与数据源(数据库、API、文件等)的交互封装进单一类,业务层只面对简洁的接口,就像图书馆的管理员负责取书,访客只需提出请求。代码中通过
IBookRepository 定义获取、查询、预订等操作,由 BookRepository 实现具体的数据访问。Dependency Inversion Principle(DIP)要求高层模块依赖抽象而非具体实现,本文把业务类BookReservationService的构造函数参数声明为IBookRepository与INotificationSender接口。依赖注入(DI)则是把具体实现(BookRepository、EmailNotificationSender、SmsNotificationSender)在容器注册后自动注入,完成 DIP 的落地。
在示例里,单一职责体现在每个类只承担数据访问、业务规则或通知发送一种职责;开放/封闭体现在新增SmsNotificationSender时无需修改业务代码;里氏替换保证任意实现INotificationSender都可直接使用;接口隔离让INotificationSender只保留SendAsync一个方法,避免臃肿。
通过这套完整的图书预订系统,开发者可以直观看到 SOLID 五大原则在实际代码中的具体体现,并快速在自己的项目中复用相同的结构。
GitHub: GitHub
#开发者 #工具 #SOLID #RepositoryPattern #DependencyInjection #CSharp #DotNet
@DevToolboxHub
