zoukankan      html  css  js  c++  java
  • 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.特点:

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

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

  • 相关阅读:
    SpringBoot Jpa 双数据源mysql + oracle + liquibase+参考源码
    C#:将字符串中连续空格作为分隔符获取多段模糊查询的字符串
    C# 传入参数2021-05-18T00:00:00.000Z使用ToDateTime日期在此基础上加8小时
    修改DbContext并不是线程安全的bug处理。
    产品经理推荐书籍
    抽象类、类和接口
    git 分支合并主干出现冲突的解决办法
    HttpClient请求设置Content-Type标头空格问题
    C# 3Des加密解密
    WPF 颜色选择器
  • 原文地址:https://www.cnblogs.com/gamov/p/10522317.html
Copyright © 2011-2022 走看看