TypeScript 面向对象编程 - 抽象
抽象是面向对象编程又名 OOP 的概念之一,它能够从旨在保留关键方面的事物中删除不必要甚至复杂的特征。 我知道它真的看起来像:WTH!? 但是让我们举例和简化它,我不会用汽车的例子,我保证!
汽水机怎么样? 这可能是抽象的一个很好的例子。 要从汽水机中获取苏打水,我们无需知道在汽水机中按下分配器标签时会即时制作饮料。 加压二氧化碳罐和水泵将加压二氧化碳气体和冷水送入碳酸化器,在碳酸化器中混合,气体溶解到水中,然后加一点调味糖浆,瞧,这就是你的饮料。
在这种情况下,对我们来说重要的是能够按下按钮并等待我们的饮料,仅此而已,所以在这个抽象场景中,“按下这个按钮来喝一杯”是基本特征。 另一方面,假设你是一名工程师,并且有一些电话说按钮有时会卡住并且你需要修复它,到目前为止,仅知道如何喝水不足以修复机器,因此你需要深入了解并 知道汽水机是如何工作的,才能处理这个问题。
让我们开始编码
仍然使用汽水机的例子,让我们编写一些代码,我们需要在一个类中改造这台机器,目前我们知道的是:有一个独特的按钮,当按下时会掉一些汽水:
/**
* The Soda Fountain machines class
*/
class SodaMachine {
/**
* Returns the soda when pushed
*/
doPush() {
console.log('get your soda')
}
}
const soda = new SodaMachine()
soda.doPush()
L#4 — 创建一个 SodaMachine 类,它代表了汽水机蓝图
L#8 - 设置一个 doPush 方法,当推时会掉苏打水
L#13 — 使用 soda 常量实例化 SodaMachine 类
L#14 — 从实例化为 soda 的 SodaMachine 类调用 doPush 方法
假设我们仍在构建我们的汽水机,我们需要添加更多按钮,所以在这个新版本中,我们的机器将不只包含一个按钮,但现在我们可以提供另外两种口味,总共三种。
考虑到现在我们有更多关于我们机器的信息,让我们假设口味是:可乐、柠檬和橙子,所以让我们编码吧!
/**
* The Soda Fountain machines class
*/
/**
* Friendly enum for Soda Flavours
*/
enum ESodaFlavours {
COCA,
LEMON,
ORANGE
}
class SodaMachine {
/**
* Returns the soda when pushed
*/
doPush(flavour: ESodaFlavours) {
console.log(`get your soda flavour ${ESodaFlavours[flavour]}`)
}
}
const soda = new SodaMachine()
soda.doPush(0)
soda.doPush(1)
soda.doPush(2)
L#8 — 添加 ESodaFlavours 枚举以帮助机器识别所选风味
L#8 — 为 doPush 方法添加一个风味参数,它应该是 ESodaFlavours 枚举中的一个项目
L#25, L#26, L#27 - 模拟三种不同的按钮场景
我们的机器快完成了,我们只需要添加一些冰块,所以我们将添加一个与其他按钮完全不同的新按钮,按下它应该会掉落一些冰块:
/**
* The Soda Fountain machines class
*/
/**
* Friendly enum for Soda Flavours
*/
enum ESodaFlavours {
COCA,
LEMON,
ORANGE
}
class SodaMachine {
/**
* Returns the soda when pushed
*/
dropSoda(flavour: ESodaFlavours) {
console.log(`get your soda flavour ${ESodaFlavours[flavour]}`)
}
/**
* Drops ice cubes when pushed
*/
dropIce() {
console.log(`get your ice cubes`)
}
}
const soda = new SodaMachine()
soda.dropSoda(0)
soda.dropIce()
soda.dropSoda(1)
soda.dropSoda(2)
soda.dropIce()
L#18 — 从 doPush 到 dropSoda
L#25 — 添加 dropIce 方法来处理冰块请求
L#33, L#33 - 模拟用户请求加冰的苏打水的场景
我们终于完成了我们的汽水机制造并准备发布!
简而言之,抽象是指表示基本方面的行为,省略不必要的特征,就像我们之前所做的那样,抽象是 OOP 的一个有用的关键概念,它帮助我们在蓝图中转换了现实世界的机器。
相关文章
在 AngularJs 中设置 Select From Typescript 的默认选项值
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程提供了在 AngularJs 中从 TypeScript 中设置 HTML 标记选择的默认选项的解释性解决方案。
在 Angular 中使用 TypeScript 的 getElementById 替换
发布时间:2023/04/14 浏览次数:153 分类:Angular
-
本教程指南提供了有关使用 TypeScript 在 Angular 中替换 document.getElementById 的简要说明。这也提供了在 Angular 中 getElementById 的最佳方法。
在 TypeScript 中使用 try..catch..finally 处理异常
发布时间:2023/03/19 浏览次数:181 分类:TypeScript
-
本文详细介绍了如何在 TypeScript 中使用 try..catch..finally 进行异常处理,并附有示例。
在 TypeScript 中使用 declare 关键字
发布时间:2023/03/19 浏览次数:97 分类:TypeScript
-
本教程指南通过特定的实现和编码示例深入了解了 TypeScript 中 declare 关键字的用途。
在 TypeScript 中 get 和 set
发布时间:2023/03/19 浏览次数:172 分类:TypeScript
-
本篇文章演示了类的 get 和 set 属性以及如何在 TypeScript 中实现它。
在 TypeScript 中格式化日期和时间
发布时间:2023/03/19 浏览次数:161 分类:TypeScript
-
本教程介绍内置对象 Date() 并讨论在 Typescript 中获取、设置和格式化日期和时间的各种方法。
在 TypeScript 中返回一个 Promise
发布时间:2023/03/19 浏览次数:182 分类:TypeScript
-
本教程讨论如何在 TypeScript 中返回正确的 Promise。这将提供 TypeScript 中 Returns Promise 的完整编码示例,并完整演示每个步骤。