Skip to content

Commit be53b24

Browse files
committed
Improve BaseApplication's comments
1 parent 8369216 commit be53b24

1 file changed

Lines changed: 43 additions & 1 deletion

File tree

app/src/main/java/me/jessyan/retrofiturlmanager/demo/BaseApplication.java

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
import android.app.Application;
1919

2020
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
21+
import me.jessyan.retrofiturlmanager.parser.AdvancedUrlParser;
22+
import me.jessyan.retrofiturlmanager.parser.DomainUrlParser;
23+
import me.jessyan.retrofiturlmanager.parser.SuperUrlParser;
2124

2225
import static me.jessyan.retrofiturlmanager.demo.api.Api.APP_DOUBAN_DOMAIN;
2326
import static me.jessyan.retrofiturlmanager.demo.api.Api.APP_GANK_DOMAIN;
@@ -28,6 +31,46 @@
2831

2932
/**
3033
* ================================================
34+
* RetrofitUrlManager 以简洁的 Api, 让 Retrofit 不仅支持多 BaseUrl
35+
* 还可以在 App 运行时动态切换任意 BaseUrl, 在多 BaseUrl 场景下也不会影响到其他不需要切换的 BaseUrl
36+
* <p>
37+
* 想要更深入的使用本框架必须要了解2个术语 pathSegments 和 PathSize
38+
* "https://www.github.com/wiki/part?name=jess" 其中的 "/wiki" 和 "/part" 就是 pathSegment, PathSize 就是 pathSegment 的 Size
39+
* 这个 Url 的 PathSize 就是 2, 可以粗略理解为域名后面跟了几个 "/" PathSize 就是几
40+
* <p>
41+
* 本框架分为三种模式, 普通模式 (默认)、高级模式 (需要手动开启)、超级模式 (需要手动开启)
42+
* <p>
43+
* 普通模式:
44+
* 普通模式只能替换域名, 比如使用 "https:www.google.com" 作为 Retrofit 的 BaseUrl 可以被替换
45+
* 但是以 "https:www.google.com/api" 作为 BaseUrl 还是只能替换其中的域名 "https:www.google.com"
46+
* 详细替换规则可以查看 {@link DomainUrlParser}
47+
* <p>
48+
* 高级模式:
49+
* 高级模式只能替换 {@link RetrofitUrlManager#startAdvancedModel(String)} 中传入的 BaseUrl, 但可以替换拥有多个 pathSegments 的 BaseUrl
50+
* 如 "https:www.google.com/api", 需要手动开启高级模式 {@link RetrofitUrlManager#startAdvancedModel(String)}
51+
* 详细替换规则可以查看 {@link AdvancedUrlParser}
52+
* <p>
53+
* 超级模式:
54+
* 详细替换规则可以查看 {@link SuperUrlParser}
55+
* 超级模式属于高级模式的加强版, 优先级高于高级模式, 在高级模式中, 需要传入一个 BaseUrl (您传入 Retrofit 的 BaseUrl) 作为被替换的基准
56+
* 如这个传入的 BaseUrl 为 "https://www.github.com/wiki/part" (PathSize = 2), 那框架会将所有需要被替换的 Url 中的 域名 以及 域名 后面的前两个 pathSegments
57+
* 使用您传入 {@link RetrofitUrlManager#putDomain(String, String)} 方法的 Url 替换掉
58+
* 但如果突然有一小部分的 Url 只想将 "https://www.github.com/wiki" (PathSize = 1) 替换掉, 后面的 pathSegment '/part' 想被保留下来
59+
* 这时项目中就出现了多个 PathSize 不同的需要被替换的 BaseUrl
60+
* <p>
61+
* 使用高级模式实现这种需求略显麻烦, 所以我创建了超级模式, 让每一个 Url 都可以随意指定不同的 BaseUrl (PathSize 自己定) 作为被替换的基准
62+
* 使 RetrofitUrlManager 可以从容应对各种复杂的需求
63+
* <p>
64+
* 超级模式也需要手动开启, 但与高级模式不同的是, 开启超级模式并不需要调用 API, 只需要在 Url 中加入 {@link RetrofitUrlManager#IDENTIFICATION_PATH_SIZE} + PathSize
65+
* <p>
66+
* 至此三种模式替换 BaseUrl 的自由程度 (可扩展性) 排名, 从小到大依次是:
67+
* 普通模式 (只能替换域名) < 高级模式 (只能替换 {@link RetrofitUrlManager#startAdvancedModel(String)} 中传入的 BaseUrl) < 超级模式 (每个 Url 都可以随意指定可被替换的 BaseUrl, pathSize 随意变换)
68+
* <p>
69+
* 三种模式在使用上的复杂程度排名, 从小到大依次是:
70+
* 普通模式 (无需做过多配置) < 高级模式 (App 初始化时调用一次 {@link RetrofitUrlManager#startAdvancedModel(String)} 即可) < 超级模式 (每个需要被替换 BaseUrl 的 Url 中都需要加入 {@link #IDENTIFICATION_PATH_SIZE} + PathSize)
71+
* <p>
72+
* 由此可见,自由度越强, 操作也越复杂, 所以可以根据自己的需求选择不同的模式, 并且也可以在需求变化时随意升级或降级这三种模式
73+
* <p>
3174
* Created by JessYan on 19/07/2017 18:45
3275
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
3376
* <a href="https://github.com/JessYanCoding">Follow me</a>
@@ -44,5 +87,4 @@ public void onCreate() {
4487
RetrofitUrlManager.getInstance().putDomain(GANK_DOMAIN_NAME, APP_GANK_DOMAIN);
4588
RetrofitUrlManager.getInstance().putDomain(DOUBAN_DOMAIN_NAME, APP_DOUBAN_DOMAIN);
4689
}
47-
4890
}

0 commit comments

Comments
 (0)