Understand Abstraction and Interface

understand,abstraction,and,interface · 浏览次数 : 0

小编点评

**抽象和接口是Java中的两个重要的优化软件项目手段,可以给大型项目带来便利、优化。** **抽象类**是一种设计模式,它可以将多个子类共享共同特征和属性,但也兼容自己独有的行为情况。抽象类非常适合多个子类共享共同特征和属性,也兼容自己独有的行为情况,同时为子类的定制实现留出空间。 **接口**则是解耦的最基本工具,接口允许将方法的定义与其实现分开,这种分离使得多个不相关的类能够实现同一组方法,从而保证了项目中不同部分之间的相互通信。 **抽象和接口可以帮助大型项目带来以下优点:** * **代码可重用性:**抽象类和接口可以被多个类继承,从而使代码可重用。 * **代码维护性:**抽象类和接口可以帮助维护代码,使其更易于理解和维护。 * **降低复杂性:**抽象类和接口可以帮助降低项目的复杂性,使其更容易维护和管理。 * **提高性能:**抽象类和接口可以帮助提高项目的性能。

正文

Foreword

抽象和接口是Java中的两个关键字,也是两种最基本的优化软件项目手段。为什么说它们是一种优化项目的手段?

人分三六九等,不同等级的人,所接触的事和处理的事是不一样的。同理,项目也分大项目和中项目和小项目,大、中、小项目所承载的目标也是不一样的。

先说小项目,如果你使用Java只是写一个小脚本,比如更新一下系统时间,自动点击某个软件按钮,修改表格数据...类似这样的功能。对于这种小项目,项目里无非三、两个功能函数,有个Main按照顺序调用一下即可,那么这种项目就永远都不需要使用到抽象和接口。用了反而是累赘,有画蛇添足的味道。

但是对于大项目就不同了,比如一个大型的电商系统,用户的需求多、使用人群广、数据类型多且需要一定关联度。商品种类多、店铺的类型各异...,当然这些都是在系统设计阶段的麻烦。在开发阶段的麻烦是,不同项目组的人都做不同的模块,一个项目组的人怎么配合也是麻烦,最后数据对接起来也是麻烦、前后端之间的数据对接...,怎么样,想想都头疼了吧。

为什么说有了抽象和接口,能给大型项目带来便利、优化?

Abstraction and Interface

一些前人留下了一些经典的设计模式,比如单一模式,指在设计的时候要保证类的单一功能,如果完全按照这种模式,那么业务的实现会变成无数个类,并且代码间非常耦合,在修改业务需求和代码的时候,都是一场灾难。

接口则是解耦的最基本工具,接口允许将方法的定义与其实现分开,这种分离使得多个不相关的类能够实现同一组方法,从而保证了项目中不同部分之间的相互通信。

抽象类非常适合多个子类共享共同特征和属性,但也兼容自己独有的行为情况,同时为子类的定制实现留出空间。

这个现象让我想到对有序数组的排序:
就类似对有序数组进行排序,使用冒泡排序和二分查找算法去实现,虽然都能完成这个效果。但是它们的时间复杂度差异也很大,差了一个数量级。

  • 冒泡排序的时间复杂度为O(n);
  • 二分查找的时间复杂度为O(logn);

同样的,你不使用抽象和对象也一样能实现大型项目,但是效果不一样,在管理的复杂度上也不一样。

image

如果说冒泡和二分体现的差异在时间和空间上。那么设计不合理的项目,就体现在在代码的工作量上。

当然,项目中增加了抽象和接口,新人的理解难度也直线上升,这也逼迫这个项目的程序员都必须得安装OOP思想,才能上手这种项目。

与Understand Abstraction and Interface相似的内容:

Understand Abstraction and Interface

Foreword 抽象和接口是Java中的两个关键字,也是两种最基本的优化软件项目手段。为什么说它们是一种优化项目的手段? 人分三六九等,不同等级的人,所接触的事和处理的事是不一样的。同理,项目也分大项目和中项目和小项目,大、中、小项目所承载的目标也是不一样的。 先说小项目,如果你使用Java只是写

[转帖]【翻译】理解 TCP/IP 网络栈

https://cizixs.com/2017/07/27/understand-tcp-ip-network-stack/ TL;DR [TOC] 译者注:很久没有翻译文章了,最近在网络看到这篇介绍网络栈的文章非常详细,正好最近在看这方面的内容,索性翻译过来。因为很多文章比较长,而且很多内容比较专

[转帖]Diagnosing latency issues

Finding the causes of slow responses This document will help you understand what the problem could be if you are experiencing latency problems with Re

支付宝小程序 | 上传图片组件(添加默认样式以及自定义上传样式)

人们害怕他们不理解的东西。 People are afraid of what they don't understand.

【Azure Cloud Service】Cloud Service(Classic) 迁移失败,找不到解决方案怎么办?

… The Cloud Service, is not in a virtual network, and thus, it cannot be migrated, it is important to understand that if there is no VNET on the current Cloud Service, it is not possible to migrate it