zoukankan      html  css  js  c++  java
  • 排球计分程序(六)——接口的设计与实现

    接下来,将进行接口的设计。这里包括数据访问层接口和业务逻辑层接口。在分层架构中,接口扮演着非常重要的角色,它不但直接决定了各层中的各个操作类需要实现何种操作,而且它明确了各个层次的职责。接口也是系统实现依赖注入机制不可缺少的部分。

    本项目的接口设计将按如下顺序进行:
    1.首先由前文的需求分析,列出主要的UI部分。
    2.分析各个UI需要什么业务逻辑支持,从而确定业务逻辑层接口。
    3.分析业务逻辑层接口需要何种数据访问操作,从而确定数据访问层接口。

     IAnnounceService接口:

    用于发布公告时

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using 排球队伍公告信息.Models.Entities;

    namespace 排球队伍公告信息.Models.Interfaces
    {
        public interface IAnnounceService
        {
            /// <summary>
            /// 发布公告
            /// </summary>
            /// <param name="announce"></param>
            void Release(AnnounceInfo announce);

            /// <summary>
            /// 修改公告信息
            /// </summary>
            /// <param name="announce"></param>
            void Notify(AnnounceInfo announce);

            /// <summary>
            /// 删除公告
            /// </summary>
            /// <param name="id"></param>
            void Remove(int id);

            /// <summary>
            /// 取得公告详细内容
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            AnnounceInfo GetDetail(int id);

            /// <summary>
            /// 取得某个分类下的所有公告
            /// </summary>
            /// <param name="categoryId"></param>
            /// <returns></returns>
            List<AnnounceInfo> GetByCategory(CategoryInfo category);
        }
    }

    ICategoryService接口

    用于公告发布后

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using 排球队伍公告信息.Models.Entities;

    namespace 排球队伍公告信息.Models.Interfaces
    {
         public interface ICategoryService
        {
            /// <summary>
            /// 添加分类
            /// </summary>
            /// <param name="category"></param>
            void Add(CategoryInfo category);

            /// <summary>
            /// 修改分类名称
            /// </summary>
            /// <param name="id"></param>
            /// <param name="name"></param>
            void ChangeName(int id,string name);

            /// <summary>
            /// 删除分类
            /// </summary>
            /// <param name="id"></param>
            void Remove(int id);

            /// <summary>
            /// 取得某个分类详细信息
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            CategoryInfo GetDetail(int id);

            /// <summary>
            /// 取得所有分类
            /// </summary>
            /// <returns></returns>
            List<CategoryInfo> GetAll();
        }

    }

     
     
     
  • 相关阅读:
    截取字符串
    VC++ PathFindFileName函数,由文件路径获得文件名
    获取GetOpenFileName多选文件名
    WideCharToMultiByte和MultiByteToWideChar函数的用法(转载)
    map set iterator not incrementable 解决办法
    定义c/c++全局变量/常量几种方法的区别(转载)
    如何禁止同IP站点查询和同IP站点查询的原理分析 Robots.txt屏蔽BINGBOT
    JavaScript 文件操作方法详解
    nginx日志配置
    php的strip_tags,htmlspecialchars,htmlentities,stripslashes,addslashes解释
  • 原文地址:https://www.cnblogs.com/sdl1305702018/p/7063884.html
Copyright © 2011-2022 走看看