• C#-设计模式-模板方法


    1.定义 

    就是抽象类的运用,将相似类中不变的内容和方法放入到父类中,进行重用。

    2.例子

    2.1 代码

    public abstract class AbstractImportData
    {
        public DataSet GetDsByExcel(string filePath)
        {
            return null;
        }
    
        public abstract bool UpdateDatabase();
    }
    
    public class SimpleImportData : AbstractImportData
    {
        public override bool UpdateDatabase()
        {
            // 简单的更新一张表,只需要excel中的表头和table中字段的对应关系即可
            return true;
        }
    }
    
    public class SqlImportData : AbstractImportData
    {
        public override bool UpdateDatabase()
        {
            // 可能需要更新多张表,这时必须自己手写sql更新逻辑
            return true;
        }
    }

    这里的代码,其实是一个excel导入的功能,但是因为有些excel导入只是更新一张表,有些是要关联更新几张表,逻辑肯定不一样。

    但是共同的部分是,都需要将excel文件中的内容转换成database,然后在进行下一步的操作。

    2.2 接口和抽象类

    抽象类和接口的区别是,接口中的方法一个都不能实现,但是抽象类不一样,抽象类内部可以存在实现过的方法,为子类提供重用。

    因此抽象类的核心,还是要将子类的公共操作进行提取,否则个人感觉就没有必要使用。

    (当然,其实抽象类也有和接口一样,可以为框架提供公共调用的功能,但是个人感觉代码的重用才是抽象类有别于接口的地方。

    学习到现在,如果是真正的面向对象思想,其实还是应该从语义上去区分接口和抽象类,这里不再详述,之后再写随笔和大家讨论。)

    3.特点:

    优点:使用继承的方式,可以达到代码的重用,避免了重复代码的产生。

    缺点:其实继承的方式耦合还是比较高的,因此有些人会建议使用聚合的方式来代替继承,因为耦合会比较低

  • 相关阅读:
    安装Hadoop单机版
    Linux的en33没有IP地址
    idea导入spring源码
    CSS 选择器之基础选择器
    CSS 简介和代码风格
    JavaScript 中 双感叹号 !! 的作用
    VS Code 中的settings.js 配置
    项目中使用 vuex 实现(状态)数据共享
    VS Code 相关设置
    Node.js 的简单了解
  • 原文地址:https://www.cnblogs.com/gamov/p/10522317.html
Copyright © 2020-2023  润新知