软件分层架构下的另类设计框架-工厂模式的使用

本文探讨了软件分层的概念及其原因,介绍了常见的设计模式如三层架构与MVC,并提出了一种新的框架模式,该模式将逻辑运算拆分为读取、运算、输出三个独立模块,以提高代码复用率并降低耦合度。

软件分层的原因

    面向对象原理中,有多态,继承等相关概念。为了提高程序的“高内聚、低耦合”。也为了更容易扩展,容易维护,同时适应程序的延展性能,开始产生了分层的概念。

现有常见设计模式

  • 普通三层架构

User Interface 表示层

  与用户展示界面交互,提供数据内容

Business   Logic   Layer,数据层

  用于给表示层提供数据内容,对数据运算和操作,同时也负责响应表示层的事件。

Data Access Layer 数据访问层

  直接操作数据库,针对数据的增添、删除、修改、查找等。

  • MVC

  模型(Model):就是封装数据和所有基于对这些数据的操作。
  视图(View):就是封装的是对数据显示,即用户界面。
  控制器(Control):就是封装外界作用于模型的操作和对数据流向的控制等。

 

使用工作方法构建我们自己的应用框架

这将会是一个新颖的设计架构模式,在整体上运算和逻辑上拆分,每个运算模块只负责相应的数据。分成三个逻辑运算,读取,运算,输出。这个优势在于每个模块只做一部分功能,不会影响其他功能,以提高代码复用率,降低耦合度;更加有利于扩展调配。例如我们可以派生多个子类运算,子类运算可配置为并发或顺序运行。

 

工厂方法接口

输入

  /// <summary>
    /// 用户读取配置和数据库文件等
    /// </summary>
    public class Input
    {
        public event Action OnReadFinished;

        public virtual void ReadConfig()
        {
            if (OnReadFinished != null)
                OnReadFinished();
        }
    }
Input

计算

 /// <summary>
    /// 负责运算过程
    /// </summary>
    public class Function
    {
        public event Action OnCalcFinished;

        public virtual void Calculate()
        {
            if (OnCalcFinished != null)
                OnCalcFinished();
        }
    }
Calculate

输出

/// <summary>
    /// 负责输出操作
    /// </summary>
    public class Output
    {
        public virtual void Write()
        { 
        }
    }
Output

 

接口的继承

继承于输入接口

  public class InputTest : Moudle.Input.Input
    {   
        public override void ReadConfig()
        {
            base.ReadConfig();
        }
    }
InputTest

继承于计算接口

 public class FunctionTest:Module.Function.Function
    {
        public override void Calculate()
        {
            base.Calculate();
        }
    }
CalculateTest

继承于输出接口

public class OutputTest:Module.Output.Output
    {
        public override void Write()
        {
            base.Write();
        }
    }
OutputTest

 

接口的调用

 

 static void Main(string[] args)
        {
            Input input = new InputTest();
            input.OnReadFinished += new Action(input_OnReadFinished);
            input.ReadConfig();
        }

        static void input_OnReadFinished()
        {
            Function function = new FunctionTest();
            function.OnCalcFinished += new Action(function_OnCalcFinished);
            function.Calculate();
        }

        static void function_OnCalcFinished()
        {
            Output output = new OutputTest();
            output.Write();
        }
Dispatch

 

通过以上内容,实现了自定义的一个框架模式,在一个完整项目周期中,我们可以按照不同的需求派生出子类实现不同的业务。

转载于:https://www.cnblogs.com/yzp12sina/p/3546322.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值