什么是抽象思维

本文探讨了抽象思维的本质及其在科学发现中的关键作用。作者通过对比实际案例与理论模型,阐述了抽象思维如何帮助我们化繁为简,提炼事物的本质特征,形成普遍规律。文章还提供了几种训练抽象思维的方法,如编程、学习理学知识、绘制概念图和下定义。

      最近在看DDD,一直在思考抽象这个事情。因为之前看金融炼金术这本书索罗斯也提到了抽象思维,索罗斯说他的思想发展有两条主线:抽象和务实。从内心出发,他更致力于发挥“抽象”思维,成为一名理论哲学家,所以他在学生时代花费了大量时间精力,去学习和发展自身的哲学观,试图建立独到的哲学理论体系。

抽象思维是什么?

我理解的抽象思维,指的是从实际的案例,实际的操作中,寻找规律,归纳共性,总结套路的思维能力。

抽象来源于具体,但又超越具体。

需要注意的是,语言作为一种认知工具,我们在用语言描述事物时,已经不自觉的运用到了“抽象”,比如:词语中红色,白色,黑色等对应不同的颜色,而颜色这个词背后就是对所有颜色进行的同类归并。

抽象思维就是对事物进行减法和除法。

第一步减法就是选取要研究的本质——“忽略次要矛盾,突出主要矛盾”——提取出事物中某种本质,稳定的特征。

第二步除法就是对所有拥有这一特性的事物划归为同一类,通过局部感知整体,得到普遍一般的结论或规律。

比如,对于人,物理学家研究运动学问题时,会突出有质量这一特点,将人抽象为一个质点。

而选取的角度不同,得到的抽象结果也不同,同一个人,在化学家以物质组成为角度的研究中又会被视为一种复杂的化合物。

抽象的现实基础在于,事物之间普遍联系和事物之间普遍存在的相似性。

抽象就是化繁为简,寻找一般规律,一般模式,用于预测和解释现实。

我们可以通过简化事物来建立模型,进而研究他们因果结构,得出一般性,普适性结论规律。

例如:伟大的牛顿三定律就是抽象思维的结晶。

一般来说,抽象程度越高,得出规律的普适性就越高,但是因为忽略的因素太多,其实际的指导较低。

至于如何训练抽象能力,我简单给一点建议:

1,编程

编程中抽象思维运用的极为普遍,编程就是把现实问题转化为机器问题,这一过程就必须将问题简化为概念模型,进而写成代码。

2,学习理学知识

数学等学科就是建立在抽象的基础上

3,画概念图

学会能将一本书的概念用思维导图来表述他们之间的关系。

4,下定义

前面已经说了语言本身就是一种低层次的抽象,学会给词语下定义,描述他们的抽象过程。

在 Java 编程语言中,抽象思维是一种核心的编程思想,它帮助开发者通过将复杂问题简化为可管理的模块,从而设计出更加灵活、可维护和可扩展的系统。抽象思维的核心在于**忽略实现细节,专注于高层次的结构和行为定义**。 ### 抽象类与接口 Java 中实现抽象思维的主要方式包括**抽象类(Abstract Class)**和**接口(Interface)**。抽象类使用 `abstract` 关键字定义,它可以包含抽象方法(没有方法体的方法)和具体方法(有实现的方法)。子类继承抽象类后必须实现其中的抽象方法[^3]。接口则定义了一组行为规范,类通过实现接口来承诺具备某些行为。 ### 抽象思维在设计模式中的应用 在常见的设计模式中,如**工厂模式**和**策略模式**,抽象思维被广泛应用。例如,工厂模式通过定义一个创建对象的接口,将对象的实例化延迟到子类,从而提高代码的灵活性和可扩展性。策略模式则利用接口或抽象类定义一组可互换的算法,使得运行时可以动态切换行为[^1]。 ### 抽象思维在框架设计中的作用 在 Spring 框架中,**IoC(控制反转)容器**是抽象思维的典型应用。Spring 通过面向抽象编程(Dependency Inversion Principle),将对象之间的依赖关系交给容器管理,而不是在代码中硬编码依赖。这种方式使得系统更加松耦合、易于测试和维护[^1]。 ### 抽象与封装的关系 抽象通常与**封装(Encapsulation)**结合使用。封装隐藏了对象的内部实现细节,仅暴露必要的接口给外部使用。这种结合使得开发者可以专注于对象的行为,而不是其实现方式。例如: ```java public abstract class Animal { public abstract void makeSound(); } public class Dog extends Animal { @Override public void makeSound() { System.out.println("Woof!"); } } ``` 在上述代码中,`Animal` 是一个抽象类,它定义了所有动物都应具备的行为(`makeSound`),但具体的实现由子类 `Dog` 提供。这种设计隐藏了 `Dog` 类的具体实现细节,仅暴露了统一的接口。 ### 抽象思维的优势 - **提高代码复用性**:通过定义通用接口或抽象类,多个类可以共享相同的结构和行为。 - **增强可维护性**:抽象层的存在使得系统修改和扩展更加容易。 - **支持多态性**:抽象类和接口是实现多态的关键,允许程序在运行时根据对象的实际类型执行不同的行为。 ### 示例:使用抽象类实现支付方式 下面是一个使用抽象类表示不同支付方式的示例: ```java public abstract class PaymentMethod { public abstract void pay(double amount); } public class CreditCardPayment extends PaymentMethod { @Override public void pay(double amount) { System.out.println("Paid $" + amount + " via Credit Card."); } } public class PayPalPayment extends PaymentMethod { @Override public void pay(double amount) { System.out.println("Paid $" + amount + " via PayPal."); } } ``` 通过这种方式,可以轻松地扩展新的支付方式,而无需修改已有的调用逻辑。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值