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

南昌网站设计网站开发网站建设怎么弄轮换图片

南昌网站设计网站开发,网站建设怎么弄轮换图片,网络建设工程师是干什么的,网络营销培训机构排名抽象类 (abstract class): 不能直接实例化,只能被继承。 用来定义一套基础框架和规范,强制子类必须实现某些方法(抽象方法)。 可用来封装一些共通的逻辑,减少代码重复。 虚方法 (virtual): …

抽象类 (abstract class):

  • 不能直接实例化,只能被继承。

  • 用来定义一套基础框架和规范,强制子类必须实现某些方法(抽象方法)。

  • 可用来封装一些共通的逻辑,减少代码重复。

虚方法 (virtual):

  • 表示这个方法可以被子类重写(override)

  • 默认给了一套实现,你可以用,也可以替换掉

  • 避免了子类必须每次都写重复代码(子类用基类实现就好)

总结:

抽象类 + 虚方法组合使用的好处是:

  • 提供一个统一的接口和逻辑框架

  • 允许子类在不破坏主结构的情况下实现个性化逻辑(比如加缓存、记录日志)

🔗 组合使用的优势

抽象类 + 虚方法
✅ 定义统一规范和基础结构
✅ 提供默认逻辑(虚方法)
✅ 允许子类按需定制(重写虚方法)
✅ 提高代码复用性、可维护性
✅ 非侵入式扩展逻辑(如:记录日志、缓存等)

 🔧 举个实际应用场景(例如仓储):

public abstract class BaseRepository<T>
{public virtual void Add(T entity){// 默认实现:记录日志 + 保存Console.WriteLine("添加前记录日志");Save(entity);}protected abstract void Save(T entity); // 强制子类必须实现
}
public class UserRepository : BaseRepository<User>
{protected override void Save(User entity){// 实现具体的保存逻辑Console.WriteLine("保存用户到数据库");}public override void Add(User entity){// 也可以选择重写 Add,增加缓存逻辑等base.Add(entity);Console.WriteLine("添加用户成功");}
}

✅ 示例代码:调用 UserRepository

public class Program
{public static void Main(string[] args){var userRepo = new UserRepository();var newUser = new User { Id = 1, Name = "张三" };userRepo.Add(newUser);/* 日志打印结果添加前记录日志保存用户到数据库添加用户成功*/}
}// 假设 User 类如下:
public class User
{public int Id { get; set; }public string Name { get; set; }
}

🎯 实战目标

构建一个 基于接口 + 抽象类 + 泛型 的通用仓储:

  • 支持常规操作(增删改查)

  • 支持扩展方法(如分页、条件查询)

  • 易于继承 & 复用


🧩 步骤一:定义接口 IRepository<T>

public interface IRepository<T> where T : class
{Task<T> GetByIdAsync(int id);Task<IEnumerable<T>> GetAllAsync();Task AddAsync(T entity);void Update(T entity);void Delete(T entity);
}

🧱 步骤二:实现抽象类 BaseRepository<T>

以 EF Core 为例,注入 DbContext

public abstract class BaseRepository<T> : IRepository<T> where T : class
{protected readonly DbContext _context;protected readonly DbSet<T> _dbSet;public BaseRepository(DbContext context){_context = context;_dbSet = _context.Set<T>();}public virtual async Task<T> GetByIdAsync(int id){return await _dbSet.FindAsync(id);}public virtual async Task<IEnumerable<T>> GetAllAsync(){return await _dbSet.ToListAsync();}public virtual async Task AddAsync(T entity){await _dbSet.AddAsync(entity);}public virtual void Update(T entity){_dbSet.Update(entity);}public virtual void Delete(T entity){_dbSet.Remove(entity);}
}

🧪 步骤三:创建具体仓储类 UserRepository

public class UserRepository : BaseRepository<User>
{public UserRepository(MyDbContext context) : base(context){}// 可扩展自定义方法public async Task<User?> GetByEmailAsync(string email){return await _dbSet.FirstOrDefaultAsync(u => u.Email == email);}
}

🧩 步骤四:在服务中使用

public class UserService
{private readonly UserRepository _userRepo;public UserService(UserRepository userRepo){_userRepo = userRepo;}public async Task RegisterUser(User user){await _userRepo.AddAsync(user);// 保存到数据库由 UnitOfWork 或 DbContext 控制}
}

✅ 什么时候用接口 vs 抽象类?

特性接口(interface)抽象类(abstract class)
目的定义行为规范定义基本结构和部分实现
支持多继承✅ 支持❌ 不支持
可包含字段❌ 不行✅ 可以
可有构造函数❌ 不行✅ 可以
成员默认类型抽象(abstract)可以是抽象,也可以有默认实现
是否可实例化❌ 不行❌ 不行

仅供学习参考,


文章转载自:

http://F4UQ3XRU.sLfkt.cn
http://8nBdzBV8.sLfkt.cn
http://1IjUvuKM.sLfkt.cn
http://dMOsyAGE.sLfkt.cn
http://upbpwtCO.sLfkt.cn
http://XsbkvfD1.sLfkt.cn
http://hO8stqet.sLfkt.cn
http://wMwo46dP.sLfkt.cn
http://AcNTm2rq.sLfkt.cn
http://8xl4NK4l.sLfkt.cn
http://3x9PHMV4.sLfkt.cn
http://b8SLCMO0.sLfkt.cn
http://651cD3iw.sLfkt.cn
http://uirD4kdr.sLfkt.cn
http://aaQj1gei.sLfkt.cn
http://gfJM0kGW.sLfkt.cn
http://ieqSbgLN.sLfkt.cn
http://C29IS6F0.sLfkt.cn
http://XswQayY9.sLfkt.cn
http://Od0SD9rm.sLfkt.cn
http://wQAJVoBO.sLfkt.cn
http://awcIuETX.sLfkt.cn
http://Tq3qsV8j.sLfkt.cn
http://8YGnBdss.sLfkt.cn
http://aADGeL3E.sLfkt.cn
http://V0lav6w0.sLfkt.cn
http://LNnJQsgw.sLfkt.cn
http://acz719ze.sLfkt.cn
http://Ir6CmDZm.sLfkt.cn
http://sDpu7yIM.sLfkt.cn
http://www.dtcms.com/wzjs/646611.html

相关文章:

  • 网站建设投标wordpress企业网站实例
  • 分类网站 模板公司的网站都是谁在维护
  • wordpress 视频图片网站宝安中心医院官网
  • 东营市做网站的公司做网站的要faq怎么给
  • 营销型网站的推广方法零基础学网站建设
  • 自己买主机可以做网站吗去掉wordpress页面的分类归档
  • 做sohu最好的推广网站网络服务禁用后如何启动
  • 东莞网站开发多少钱百度pc端提升排名
  • 云平台网站叫什么烟台 做网站的公司
  • 温州网站建设备案东莞手机网站建设公司
  • 成都网站建设推广免费的制作手机网站平台
  • 网站的建设需要数据库民政 门户网站 建设
  • 苏州高级网站建设网络营销推广的目标
  • 精选赣州网站建设百度竞价排名广告定价鲜花
  • 做网站切片私人推流服务器
  • 织梦网站流动广告代码seowhy是什么意思中文
  • 常用网站名称大全怎样建网站才赚钱
  • 青岛制作网站的网站微信二维码悬浮
  • 建设官方网站的费用账务处理电商网站设计图片
  • 如何自主建设企业网站网站建设大小
  • 深圳推广网站redis 缓存 wordpress
  • PK10如何自己做网站布吉商城网站建设哪家便宜
  • 个人介绍网站模板含关键词的网站建设
  • wordpress建站教程主题做高端品牌网站
  • 做网站如何引用头部西安市建设工程信息网官网
  • seo网站代码优化网站建好了 怎么建后台
  • 芜湖南陵网站建设软件外包网
  • 深圳网站制作公司嘉兴十大互联网营销公司
  • 做医疗健康类网站需要资质吗301网站跳转设置
  • 免费完整版的网站模板wordpress主题 建站