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.特点:

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

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

扫描二维码关注公众号,回复: 5517270 查看本文章

猜你喜欢

转载自www.cnblogs.com/gamov/p/10522317.html