精华内容
下载资源
问答
  • 芯片规模扩大到百万门级,从计算量、后端布局布线(placement&routing,P&R)工具、内存占用、运行时间、设计时序收敛性等方面考虑,扁平化后端实现方式已变得难以承受,近年来,层次化的设计方式被广泛采用,以...
  • 较少层次(扁平类结构:  优点:代码可读性增加  缺点:增加了代码重复几率   较多层次的类结构:  优点: 最大限度重用代码,减少了重复代码几率  缺点: 过多层次的继承降低了代码可读性...

    较少层次(扁平化)的类结构:

                优点:代码可读性增加

                缺点:增加了代码重复的几率

     

    较多层次的类结构:

                优点: 最大限度重用代码,减少了重复代码的几率

                缺点: 过多层次的继承降低了代码的可读性。随着功能的变化(增删改),原来对类以及类层次结构的定义非常有可能产生大的变化。在不重构的情况下,类全从结构还是功能上都将变得越来越复杂,越来越怪异,越来越难懂。

     

    ==================================================

    权衡选择:

    UI组件设计上,选择扁平化的类层级设计。以一定程度的代码重复换取其他优点。

    展开全文
  • 层次化构架

    2008-07-09 15:46:00
    进行层次化优点一般表现为下面5点: 1、以后开发可以只关注整个结构中其中某一层; 2、很容易用新实现来替换原有层次实现; 3、可以降低层与层之间依赖; 4、标准化; 5、利于各层逻辑复用...


    经过前段时间的修改,对KFDSWEB应用系统进行了优化:主要是对程序进行了模块化设计(采用三层架构)
    进行层次化后优点一般表现为下面5点:  
    1、以后开发可以只关注整个结构中的其中某一层; 
    2、很容易的用新的实现来替换原有层次的实现;  
    3、可以降低层与层之间的依赖;   
    4、标准化;  
    5、利于各层逻辑的复用。   
    概括的用书面语言来说,分层式设计可以达至如下目的:分散关注、松散耦合、逻辑复用、标准定义。 
    分层式结构也不可避免具有一些缺陷:  
    1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,
    如今却必须通过中间层来完成。  
    2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,
    为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

    谈起分层,不是只有在后台代码有这个概念,而层次也不一定有三层,
    有的人分7层,有的分2层!三层只是一个表面上的说法,实际过程中分的多的话,但是也逃不出这3层吧 。 
    在前台页面设计的时候也分层了,js,css,html;优点是能快速更改布局

    感想:
    分层更能体现面向对象
    表现如下:
    简单的说MVC模式中的M层或者以orm为思想的Hibernate就充分体现的这一点,其实数据库中的每张表都是可以对象化的,
    也就是说表中的每个字段都是一个属性,每条记录都是一个个体;针对每张表的操作就是方法.
    而在业务逻辑层和数据访问层,为了能根据不同的参数形式和个数调用不同的方法,就得在业务逻辑层进行重载,等等都是不约而同的。

     


     

    转载于:https://www.cnblogs.com/tfds/archive/2008/07/09/1238978.html

    展开全文
  • 在信息管理系统日常开发过程中,要维护很多表,因此...当时完全没有什么设计可言,只是把数据库中字段映射成类里属性。然后增加一个Insert和Update方法来生成相应Sql语句。优点是:其它人使用时,不用再关心

    在信息管理系统的日常开发过程中,要维护很多表,因此如果是使用面向过程的开发方式的话,往往就要根据不同的表,写很多不同的SQL语句。万一数据库结构发生了更改那就这些语句哪里出错了还是一个问题。曾经我是手工去把数据库的表映射成类,然后来调用。当时完全没有什么设计可言,只是把数据库中的字段映射成类里的属性。然后增加一个InsertUpdate方法来生成相应的Sql语句。优点是:其它人使用时,不用再关心数据库表的结构,只是操作这个类的实例就可以了。但缺点也有不少:工作量大(每个表都写一个类,每一个字段要写一个私有成员,写一个公开的属性,这些都是重复的体力劳动啊。),同时万一数据库有改动时,修改这个类也是比较麻烦的。

    网上也有有不少开源的框架如NHibernate。不过初步了解了一下。使用起来还是比较麻烦的。还要搞个XML文件。那要输入和维护的东西不是更多了吗?

    因此最近开发考虑有没有一些简单通用的方法可以使数据库转换成类。我打算利害.net的反射机制设计一个类层次。设计目标如下:

    1、  首先要必须实现数据库表向类的映射。

    2、  数据库的字段不一定要跟类的属性同名。(不过使用时同名还是会方便点的。^_^

    3、  要支持事务的机制。(这是后来在使用中才想到的,有很多情况要确保多个对象是同时更新的)。

    4、  使用要方便(我比较喜欢不管是插入一个记录还是修改都只调用一个方法。而不希望区分InsertUpdate方法)*_^比较懒,没办法。

     

    废话说了不少,现在开发说说具体的设计与实现:

    为了简化对数据库的操作,当然要设计一些工具类啦:

    DBManager就是这里要用到的工具类,他可以根据app.config文件里的配置得到一个SqlConnection对象。还可以执行Sql语句。查询返回DataTable对象。还有很多其它功能。下面的代码只贴出用到的功能。

    using System;

    using System.Data;

    using System.Data.SqlClient;

    using System.Collections;

    using System.Text;

    using System.IO;

     

    namespace YZPTool

    {

         public class DBManager

         {

             /// <summary>

             /// 读取app.config里的连接字符串。

             /// </summary>

             public static string ConnectionString

             {

                  get

                  {

                       return System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];

                  }

             }

     

             /// <summary>

             /// 根据app.config里的<add key="ConnectionString" value = "Server=(local);uid=sa;pwd=123456;database=test"></add>得到一个连接对像

             /// </summary>

             /// <returns></returns>

             public static SqlConnection GetConnection()

             {

                  try

                  {

                       SqlConnection sconn = new SqlConnection(ConnectionString);

                       return sconn;

                  }

                  catch

                  {

                       return null;

                  }

             }

     

             /// <summary>

             /// 根据参数生成连接对象。

             /// </summary>

             public static SqlConnection GetConnection(string server,string userid,string passwd,string database)

             {

                  try

                  {

                       string connstring = "Server="+server+";uid="+userid+";pwd="+passwd+";database="+database;

                       SqlConnection sconn = new SqlConnection(connstring);

                       return sconn;

                  }

                  catch

                  {

                       return null;

                  }

             }

     

             /// <summary>

             /// 把行Sql查询语句,返回一个DataTable作为查询结果

             /// </summary>

             /// <param name="aStrSql"></param>

             /// <param name="aConn"></param>

             /// <returns></returns>

             public static DataTable GetDataTable(string aStrSql,SqlConnection aConn)

             {

                  DataTable dt;

                  try

                  {

                       SqlDataAdapter da = new SqlDataAdapter(aStrSql,aConn);

                       dt = new DataTable();

                       da.Fill(dt);

                  }

                  catch (Exception e)

                  {

                    throw (new Exception(e.Message+"/n出错Sql语句:"+aStrSql));

                  }

                  return dt;

             }

     

             public static DataTable GetDataTable(string aStrSql)

             {

                  using (SqlConnection aConn = DBManager.GetConnection())

                  {

                       return GetDataTable(aStrSql,aConn);

                  }

             }

     

             public static DataTable GetDataTable(string aStrSql,SqlConnection aConn,IList aSPC)

             {

                  DataTable dt;

                  try

                  {

                       SqlDataAdapter da = new SqlDataAdapter(aStrSql,aConn);

                       foreach (SqlParameter sp in aSPC)

                       {

                           da.SelectCommand.Parameters.Add(sp);

                       }

                       dt = new DataTable();

                       da.Fill(dt);

                  }

                  catch (Exception e)

                  {

                       throw (new Exception(e.Message+"/n出错Sql语句:"+aStrSql));

                  }

                  return dt;

     

             }

     

             public static DataTable GetDataTable(string aStrSql,IList aSPC)

             {

                  using (SqlConnection aConn = DBManager.GetConnection())

                  {

                       return GetDataTable(aStrSql,aConn,aSPC);

                  }

     

             }

     

             public static int ExecuteSql(string aStrSql)

             {

                  int result = 0;

                  try

                  {

                       SqlConnection conn = DBManager.GetConnection();

                       conn.Open();

                       SqlCommand cmd = new SqlCommand(aStrSql,conn);

                       result = cmd.ExecuteNonQuery();

                       conn.Close();

                  }

                  catch (Exception e)

                  {

                       throw (new Exception(e.Message+"/n出错Sql语句:"+aStrSql));

                  }

                  return result;

             }

         }

    }

    工具类设计完成,下一篇将会真正的讲讲如何去实现一个灵活的类结构来对数据库进行操作。

     

    Koy0755[原创]

    展开全文
  • 相信小伙伴们都知道,随着软件测试行业发展和进步自动测试已经成为必然。在竞争日益激烈市场环境中也是你升职加薪利器。所以,小编决定从今天起!...Python 的设计具有很强可读性,相比其他语言经常使用英...

    相信小伙伴们都知道,随着软件测试行业的发展和进步自动化测试已经成为必然。在竞争日益激烈的市场环境中也是你升职加薪的利器。

    所以,小编决定从今天起!将要系统、连续、高质量的持续更新「整套自动化测试」文章!从0开始,让你100%掌握自动化测试技能。

    一.Python特点

    Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。它的特点如下:

    (1) Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

    (2) Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。

    (3) Python 是面向对象语言:这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

    (4) Python 是初学者的语言:Python对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

    ed0044a4d821

    乐搏软件测试

    二.Python优缺点

    1)优点

    简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。

    易学:就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。

    免费、开源:Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改 动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为什么Python如此优秀的原因之一——它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。

    高层语言:当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。

    可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、 Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台。

    解释型语言:一个用编译型语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0 和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语 言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译 成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于 你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。

    面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。

    可扩展性:如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

    丰富的库:Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、 CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要 安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、 Twisted和Python图像库等等。

    规范的代码:Python采用强制缩进的方式使得代码具有极佳的可读性。

    ed0044a4d821

    乐搏学院

    2)缺点:

    运行速度,有速度要求的话,用 C++ 改写关键部分吧。

    国内市场较小(国内以 Python 来做主要开发的,目前只有一些 web2.0 公司)。但时间推移,目前很多国内软件公司,尤其是游戏公司,也开始规模使用他。

    中文资料匮乏(好的 Python 中文资料屈指可数,现在应该变多了)。托社区的福,有几本优秀的教材已经被翻译了,但入门级教材多,高级内容还是只能看英语版。

    构架选择太多(没有像 C# 这样的官方.net 构架,也没有像 ruby 由于历史较短,构架开发的相对集中。Ruby on Rails 构架开发中小型web程序天下无敌)。不过这也从另一个侧面说明,python比较优秀,吸引的人才多,项目也多。

    每天持续更新,软件测试知识!

    如有转载,请联系博主!图文来自网络,如有侵权请联系删除

    展开全文
  • 它具有其他企业级架构所不具有的业务灵活性,把SOA松耦合、关注点分离、功能抽象的优点结合到企业组件业务架构方法中,从概念模型、层次结构、实现方式等方面对基于SOA的组件平台框架进行设计,构建企业服务总线,...
  • 基于领域驱动设计(DDD)开发项目,它具有代码层次分明,业务更好贴合业务,使代码可维护性和可读性大大提高等优点,而MAVEN和Spring天生就是为模块设计开发,最近结合之前DDD使用经验,结合使用MAVEN和...
  • 文章目录Bridge模式应用场景本质优点缺点角色设计模式类图示例程序示例程序类图示例代码拓展思路相关设计模式满足原则 Bridge模式 应用场景 需要将类功能层次结构和类实现层次结构连接起来,增加功能和...
  • 优点:业务层次清晰。并且业务之间调用方便。适用于中小型团队建设。 缺点:代码烦乱,维护性差。使用SVN,代表你项目不是独立,是共用体。 如果程序内部部分代码发生异常。将导致整个项目崩溃。并且开发人员...
  • 协议分层具有概念和结构 的优点 分层提供了一种结构方式来讨论系统组件。模块使得更新系统组件更为容易。分层的潜在缺点 [1] 某层可能重复其较低层的功能 [2] 某层的功能可能需要仅在其他层才出现的信息...
  • 本控制器主要针对过程控制实验室的控制装置而设计的,对浙大中控的AE2000B过程控制实验装置中电热锅炉的温度进行控制、显示,具有手动、自动功能,带有漏电、超温、超压及缺水保护和报警系统。 智能仪表的研制开发 ...
  • 应充分利用VHDL“自顶向下”的设计优点以及层次化的设计概念,层次概念对于设计复杂数字系统是非常有用,它使得我们可以从简单单元入手,逐渐构成庞大而复杂系统。 首先应进行系统模块划分,规定每一个...
  • DIV+CSS建立标准WEB网页八项优点: ... 二、使用div对于设计使用ajax(动态网站静态)等时候,可以减少Javascript代码对于页面控制时候复杂度,因为使用table时候,层次关系最起码有三层,
  • nginx以及其优点

    2019-10-09 14:17:42
    nginx是web服务器,由c语言开发,基于事件驱动能处理百万级别 tcp连接,高度模块化设计和自由许可证使得扩展其功能模块层出不穷,跨平台,可使用当前操作系统特有一些高效api开提高自己性能nginx以性能为...
  • 对于面向对象编程语言你了解多少呢?面向对象语言有哪几种你都了解吗?...2、c++C++是C语言继承,它既可以进行C语言过程程序设计,又可以进行以抽象数据类型为特点基于对象程序设计,还...
  • 网络层次化结构设计 网络层次化设计思路 接入层功能 汇聚层功能 核心层功能 层次化网络设计模型的优点 锐捷网络交换机介绍 锐捷网络路由器介绍 锐捷网络安全设备介绍 设计一个网络方案
  • 软件分层设计的优缺点 优点:分层式结构究竟其优势何在?Martin Fowler在《Patterns of Enterprise Application Architecture》一书中给出了答案:1、开发人员可以只关注整个结构中的其中某一层;2、可以很容易的用...
  • 开篇的一段话十分吸引我,这段话在高层次上说明了面向对象编程的缺点,以及 Rx.js 这种编程范式的优点。 有一种非常强有力的设计策略,特别适合于构造那些模拟真实物理系统的程序,那就是「基于被模拟的系统的结构...
  • 适用于软工考研。张海藩软件工程导论中结构中结构非结构看完这篇文章应该就懂了。结构程序的思想程序由顺序、选择和循环这三种基本结构... 在程序设计时应采用自顶向下逐步细化的实施方法结构程序的优点 ...
  • 软件框架设计的艺术

    2014-05-27 11:56:07
    7.1 模块化设计的类型 100 7.2 组件定位和交互 103 7.3 编写扩展点 116 7.4 循环依赖的必要性 117 7.5 满城尽是Lookup 121 7.6 Lookup的滥用 126 第8章 设计API时要区分其目标用户群 129 8.1 ...
  • OSI层次模型

    2016-11-28 16:43:00
    灵活性好,某一层变化不会影响到其它层设计者,可专心设计开发专利应用 各层通过一个接口在相邻层上下通信 OSI模式: 应用层:用户接口 表示层:数据表示加密等特殊处理 会话层:保...
  • 使用Visual Studio 2010, 专业开发人员能够: 使用改进后可视化设计工具、编程语言和代码编辑器,享受高效率开发环境 在统一开发环境中,开发并调试多层次的服务器应用程序使用集成可视化数据库设计和报告...
  • 摘 要:本文针对现有AC-PDP驱动电路产生波形不够灵活缺点,基于隔离变压器耦合思想,采用模块层次的设计方法,设计并实现了一种新型驱动电路。经理论分析、计算机模拟和实际测试,此电路能够实现控制...
  • 1.3.2 Java语言的优点 11 1.3.3 C语言的优点 13 1.3.4 方案选择 14 2 概要设计 16 2.1 游戏设计分析 16 2.1.1 地图文件的引用 18 2.1.2 程序运逻辑 19 2.1.3 绘图 20 2.1.4 显示平台 22 2.2 注意事项 24 2.3 游戏...
  • 无线传感器网络自身独特功能需求影响了其内核设计,使其有别于通常RTOS。...系统实现与层次状态机等形式化设计描述一一对应,也方便了验证。整体设计达到了可靠、易用、兼容、可移植和可扩展预期目标。
  • 2、采用MVC框架模式,具有耦合性低、重用性高、生命周期成本低、可维护性高、有利软件工程管理等优点 3、采用WebAPI,客户端完全摆脱了代理和管道来直接进行交互 4、采用EasyUI前台UI界面插件,可轻松打造出...
  • 硬件描述语言VHDL——元件例

    千次阅读 2019-04-14 20:03:53
    从系统的观点来看,这是层次化的设计,有利于扩展。 元件例化 元件例化,简单来说就是将以前设计的实体当做本设计的一个元件,然后利用VHDL语句将各元件之间的连接关系描述出来。元件例化语句由两部分组成,一部分...
  • 设计模式

    2021-05-07 18:32:36
    设计模式 七大软件设计原则 开闭原则 对扩展开放,对修改关闭 依赖倒置原则 高层次模块不依赖于低层次模块,二者相互依赖其抽象 单一指责原则 一个接口/方法/类只负责...在类初始化的时候创建单例对象 优点:效率高、

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 434
精华内容 173
关键字:

层次化设计的优点