Skip to content

Commit

Permalink
Merge pull request #421 from marszhangzhixing/patch-4
Browse files Browse the repository at this point in the history
Update 2020-05-24-重学Java设计模式《抽象工厂模式》.md
  • Loading branch information
fuzhengwei authored May 27, 2024
2 parents 63eea7b + efbee70 commit b6be0db
Showing 1 changed file with 6 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ lock: need

`学习设计模式的心得有哪些,怎么学才会用!`

设计模式书籍,有点像考驾驶证的科一、家里装修时的手册、或者单身狗的恋爱宝典。但!你只要不实操,一定能搞的**``七糟**。因为这些指导思想都是从实际经验中提炼的,没有经过提炼的小白,很难驾驭这样的知识。所以在学习的过程中首先要有案例,之后再结合案例与自己实际的业务,尝试重构改造,慢慢体会其中的感受,从而也就学会了如果搭建出优秀的代码
设计模式书籍,有点像考驾驶证的科一、家里装修时的手册、或者单身狗的恋爱宝典。但!你只要不实操,一定能搞的**``七糟**。因为这些指导思想都是从实际经验中提炼的,没有经过提炼的小白,很难驾驭这样的知识。所以在学习的过程中首先要有案例,之后再结合案例与自己实际的业务,尝试重构改造,慢慢体会其中的感受,从而也就学会了如何搭建出优秀的代码

## 二、开发环境

Expand Down Expand Up @@ -106,7 +106,7 @@ itstack-demo-design-2-00
![Redis单机服务](https://bugstack.cn/assets/images/2020/itstack-demo-design-2-04.png)

- 模拟Redis功能,也就是假定目前所有的系统都在使用的服务
- 类和方法名次都固定写死到各个业务系统中,改动略微麻烦
- 类和方法名称都固定写死到各个业务系统中,改动略微麻烦

#### 2.2 模拟集群 EGM

Expand Down Expand Up @@ -174,9 +174,9 @@ public class CacheServiceImpl implements CacheService {

## 五、用一坨坨代码实现

`讲道理没有ifelse解决不了的逻辑,不行就在加一行`
`讲道理没有ifelse解决不了的逻辑,不行就再加一行`

此时的实现方式并不会修改类结构图,也就是与上面给出的类层级关系一致。通过在接口中添加类型字段区分当前使用的是哪个集群,来作为使用的判断。可以说目前的方式非常难用,其他使用方改动颇多,这里只是做为例子
此时的实现方式并不会修改类结构图,也就是与上面给出的类层级关系一致。通过在接口中添加类型字段区分当前使用的是哪个集群,来作为使用的判断。可以说目前的方式非常难用,其他使用方改动颇多,这里只是作为例子

### 1. 工程结构

Expand Down Expand Up @@ -398,7 +398,7 @@ public static <T> T getProxy(Class<T> interfaceClass, ICacheAdapter cacheAdapter
}
```

- 这里主要的作用就是完成代理类,同时对于使用哪个集群有外部通过入参进行传递
- 这里主要的作用就是完成代理类,同时对于使用哪个集群由外部通过入参进行传递

**JDKInvocationHandler**

Expand Down Expand Up @@ -464,4 +464,4 @@ Process finished with exit code 0

- 抽象工厂模式,所要解决的问题就是在一个产品族,存在多个不同类型的产品(Redis集群、操作系统)情况下,接口选择的问题。而这种场景在业务开发中也是非常多见的,只不过可能有时候没有将它们抽象化出来。
- `你的代码只是被ifelse埋上了!`当你知道什么场景下何时可以被抽象工程优化代码,那么你的代码层级结构以及满足业务需求上,都可以得到很好的完成功能实现并提升扩展性和优雅度。
- 那么这个设计模式满足了;单一职责、开闭原则、解耦等优点,但如果说随着业务的不断拓展,可能会造成类实现上的复杂度。但也可以说算不上缺点,因为可以随着其他设计方式的引入和代理类以及自动生成加载的方式降低此项缺点。
- 那么这个设计模式满足了;单一职责、开闭原则、解耦等优点,但如果说随着业务的不断拓展,可能会造成类实现上的复杂度。但也可以说算不上缺点,因为可以随着其他设计方式的引入和代理类以及自动生成加载的方式降低此项缺点。

0 comments on commit b6be0db

Please sign in to comment.