Dubbo源码系列更新两篇文章

This commit is contained in:
youthlql
2021-09-13 00:08:48 +08:00
parent 0c16e8d9b1
commit 6eda136890
18 changed files with 2380 additions and 146 deletions

View File

@@ -8,7 +8,7 @@ categories:
- 01.设计思想
keywords: 设计模式,设计思想
description: 设计模式第一部分-常用设计思想。
cover: 'https://cdn.jsdelivr.net/gh/youthlql/lqlp@master/design_patterns/logo.jpg'
cover: 'https://unpkg.zhimg.com/youthlql@1.0.0/design_patterns/logo.jpg'
abbrlink: c3dcce5d
date: 2021-06-07 17:21:58
---
@@ -198,7 +198,7 @@ public class Ostrich extends AbstractBird { //鸵鸟
1. 这种设计思路虽然可以解决问题,但不够优美。因为除了鸵鸟之外,不会飞的鸟还有很多,比如企鹅。对于这些不会飞的鸟来说,我们都需要重写 fly() 方法抛出异常。这样的设计一方面徒增了编码的工作量另一方面也违背了我们之后要讲的最小知识原则Least Knowledge Principle也叫最少知识原则或者迪米特法则暴露不该暴露的接口给外部增加了类使用过程中被误用的概率。
2. 你可能又会说,那我们再通过 AbstractBird 类派生出两个更加细分的抽象类:会飞的鸟类 AbstractFlyableBird 和不会飞的鸟类 AbstractUnFlyableBird让麻雀、乌鸦这些会飞的鸟都继承 AbstractFlyableBird让鸵鸟、企鹅这些不会飞的鸟都继承 AbstractUnFlyableBird 类,不就可以了吗?具体的继承关系如下图所示:
<img src="https://cdn.jsdelivr.net/gh/youthlql/lqlp@master/design_patterns/design_ideas/0001.png"/>
<img src="https://unpkg.zhimg.com/youthlql@1.0.0/design_patterns/design_ideas/0001.png"/>
@@ -206,7 +206,7 @@ public class Ostrich extends AbstractBird { //鸵鸟
2. 是否会飞是否会叫两个行为搭配起来会产生四种情况会飞会叫、不会飞会叫、会飞不会叫、不会飞不会叫。如果我们继续沿用刚才的设计思路那就需要再定义四个抽象类AbstractFlyableTweetableBird、AbstractFlyableUnTweetableBird、AbstractUnFlyableTweetableBird、AbstractUnFlyableUnTweetableBird
<img src="https://cdn.jsdelivr.net/gh/youthlql/lqlp@master/design_patterns/design_ideas/0002.png"/>
<img src="https://unpkg.zhimg.com/youthlql@1.0.0/design_patterns/design_ideas/0002.png"/>
@@ -376,7 +376,7 @@ demofunction(client);
<img src="https://cdn.jsdelivr.net/gh/youthlql/lqlp@master/design_patterns/design_ideas/0003.png"/>
<img src="https://unpkg.zhimg.com/youthlql@1.0.0/design_patterns/design_ideas/0003.png"/>