zoukankan      html  css  js  c++  java
  • 感悟系列抽象类

    一、前言

      在对业务对象进行设计,通过抽象和接口来构建类,由类及其类之间的关系构建模块或者模式,由模块及其堆叠构建框架,由框架的整合构建系统,由系统及系统间的分工与合作构造平台,整个过程和房子的建造是一致的,由小到大,由零散到整体的过程。所以由0到1的过程,抽象和接口的设计就尤其的重要,假设在对需求足够明确,对业务理解足够清晰明了的情况下,如何通过抽象的方式把握业务本质和主体就显得至关重要。好的抽象带来的是业务的明确,不好的抽象带来的是业务模糊不清。

    二、定义

      抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程。具体地说,抽象就是人们在实践的基础上,对于丰富的感性材料通过去粗取精、去伪存真、由此及彼、由表及里的加工制作,形成概念、判断、推理等思维形式,以反映事物的本质和规律的方法—来自百度百科的定义。

      在类的创建中,抽象是对系统业务中的具有同类性质的对象(事物)抽象公有的方法、属性、事件,对非公共的通过定义抽象方法,在继承抽象的类中重写虚方法。抽象的角度或者抽象的高度不同,所表达的含义也会不同,所以抽象的内容就不仅仅局限于场景中对象(实体)还可以是业务规则、服务、算法等等。

      抽象与具体想比较是一个很泛的东西,不易于理解,就像在数学中的代数表达式,通过简简单单的几个符号就代表了一类函数,可见抽象的概括性,统一性,表达上的魅力。在模式设计,抽象对于模块间的解耦可以通过抽象类的方式来实现,在设计原则中有“抽象不应该依赖于细节,细节应该依赖于抽象”,所以使用的抽象也是构建良好的系统的关键。

     

    三、总结

      抽象不仅仅是在业务实体中进行,还可以在其他方面中体现,所要表达的就是把这个事物通过简单的定义描绘出来,把相关性的事物在进行归属和分类,使得层次清晰明了,业务在代码中也得到体现。由于抽象在角度的选取,层次的高低上有所不同,所以抽象没有唯一答案,同一个业务可能抽象的模型是不一样的,好与坏取决于模型和业务的接近程度。

  • 相关阅读:
    NOIP前咕咕 : BZOJ3172: [Tjoi2013]单词
    BZOJ4350: 括号序列再战猪猪侠【区间DP】
    Codeforces 983B. XOR-pyramid【区间DP】
    POJ1651 Multiplication Puzzle【区间DP】
    LOJ10131. 「一本通 4.4 例 2」暗的连锁【树上差分】
    UOJ22. 【UR #1】外星人【DP】【思维】
    BZOJ5125: [Lydsy1712月赛]小Q的书架【决策单调性优化DP】【BIT】【莫队】【分治】
    Codeforces 868F. Yet Another Minimization Problem【决策单调性优化DP】【分治】【莫队】
    BZOJ1835: [ZJOI2010]base 基站选址【线段树优化DP】
    Codeforces 165 E. Compatible Numbers【子集前缀和】
  • 原文地址:https://www.cnblogs.com/tuqunfu/p/15718619.html
Copyright © 2011-2022 走看看