Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
面向对象设计1.pdf
Search
Yijie
December 03, 2020
Technology
0
23
面向对象设计1.pdf
Yijie
December 03, 2020
Tweet
Share
More Decks by Yijie
See All by Yijie
nothing_is_something.pdf
blowdy
0
12
Other Decks in Technology
See All in Technology
Babylon.jsと色々なものを組み合わせる:ブラウザのAPIやガジェットや2D描画ライブラリなど / Babylon.js 勉強会 vol.3
you
PRO
0
190
Rustで「プリズモイダル法」を利用して「土量計算」をガチでやる
nokonoko1203
1
360
AWS学習者向けにAzureの解説スライドを作成した話
handy
3
220
Documentação de Produtos: Artefatos essenciais na prática
rigolon
1
230
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
37k
Grafana x PagerDuty Better Together
jacopen
1
340
Autonomous Database Cloud 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
15
35k
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
2
170
CockroachDB はどのくらい「しぶとい」のか? / How tough is CockroachDB?
kota2and3kan
6
4k
Gitlab本から学んだこと - そーだいなるプレイバック / gitlab-book
soudai
7
1.4k
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Musicを例に~
otanet
0
320
個人のAWSアカウントをマルチ運用してみた
miura55
2
260
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
245
20k
Designing Experiences People Love
moore
136
23k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
660
120k
Git: the NoSQL Database
bkeepers
PRO
423
63k
Building Applications with DynamoDB
mza
88
5.6k
Building Effective Engineering Teams - LeadDev
addyosmani
32
1.9k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
Building Adaptive Systems
keathley
32
1.9k
[RailsConf 2023] Rails as a piece of cake
palkan
28
4k
Optimizing for Happiness
mojombo
370
69k
What the flash - Photography Introduction
edds
64
11k
Robots, Beer and Maslow
schacon
PRO
155
7.9k
Transcript
面向对象设计 设计具有单一职责的类
面向对象系统 • 基础:消息 • 组织结构:类 • 设计的核心:消息 • 标准:编写既定范围的一个实现方式;易于更改的应用程序(知 识、技能、创造力)。
决定类的内容 • 应用程序(组织代码,编写代码) • 将方法分组成类 • 组织代码以便于更改
组织易于更改的代码 • 没有意想不到的副作用 • 轻微的需求变动对代码更改也较小 • 易于重用
创建具有单一职责的类 • 示例:自行车和齿轮 • 齿比(比较不同的齿轮)
• 一个计算齿轮比率的 程序 添加需求:不一样的车轮
添加需求(不一样的车轮)
这个代码组织方式是最好的吗? • 视情况而定 • 固定程序 • 需要易于更改适应未来需求
单一职责的重要性 • 单一职责、积木模式 • 多职责,难以重用,职责纠缠不清,迷惑
一个类的单一职责 • 提问 • Hey,齿轮,你的比率是多少 • Hey,齿轮,你的轮胎是多少 • 一句话描述 •
和、或 • 设计决策
拥抱变化 • 依赖行为,不依赖数据 • DRY(每一个细小的行为都只存在于一个地方)
隐藏实例变量 • 公有 • 私有 • 保护代码,避免受到意想不到的变化影响。 • 数据的行为不确定性
隐藏数据结构 • 1.调用依赖hash结构 • 2. 不受外部数据结构影响,可读性,拥抱变化
全面推行单一职责 • 将额外的责任从方法提取出来 • 方法也应该是单一职责的 • 将类里的额外职责隔离起来 • Gear •
Wheel
condition averse Nil MIssingAnimal Null Object Pattern