X Tutup
Skip to content

Commit 8a0d156

Browse files
committed
修改mvp模式2文章图片链接
1 parent 986c2fe commit 8a0d156

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

_posts/2018-03-21-MVP模式探索——TheMVP的尝试和扩展.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ catalog: true
88
tags:
99
- Android
1010
- MVP
11+
- theMVP
1112
- 设计模式
1213
---
1314

@@ -61,7 +62,7 @@ MVP模式虽然被大力推广和使用,但是他必然也是有缺点的,
6162

6263
先看一下我改造过后的theMVP模式的原理图
6364

64-
![这里写图片描述](//img-blog.csdn.net/20180320141401403?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3lrYjE5ODkxMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
65+
![这里写图片描述](https://ykbjson.github.io/blogimage/mvppicture2/97E4FABB-B41C-4637-8108-2ECAFDBA4E8E.png)
6566

6667
theMVP模式的创造者在他的文章里面提到了这个问题,他页提到了解决方法,使用集合,但是他似乎并没去尝试,或者尝试了,只是太忙了,没时间分享给大家而已。虽然我想给这个模式改个名字,可是还是算了吧,毕竟不属于我的创作,我只是个搬运工而已。所以,后面还是叫他theMVP模式吧。
6768

@@ -71,25 +72,26 @@ theMVP模式的创造者在他的文章里面提到了这个问题,他页提
7172

7273
先看看包结构的变化(请忽略我蹩脚的命名)
7374

74-
![这里写图片描述](//img-blog.csdn.net/2018032014351686?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3lrYjE5ODkxMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
75+
![这里写图片描述](https://ykbjson.github.io/blogimage/mvppicture2/package_info_image.jpeg)
7576

7677
首先加入了两个注解 ModelBinderRouter、ViewBinderRouter
7778

7879
ModelBinderRouter
7980

80-
![这里写图片描述](//img-blog.csdn.net/20180320143700887?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3lrYjE5ODkxMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
81+
![这里写图片描述](https://ykbjson.github.io/blogimage/mvppicture2/model_binder_router_image.jpeg)
8182

8283
只是声明Model需要的DataBinder的class,便于在Model变化的时候,Presenter找到对应的DataBinder操作View。
8384

8485
ViewBinderRouter
8586

86-
![这里写图片描述](//img-blog.csdn.net/20180320144018207?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3lrYjE5ODkxMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
87+
![这里写图片描述](https://ykbjson.github.io/blogimage/mvppicture2/view_binder_router_image.jpeg)
8788

8889
这里声明了Presenter需要包含的Delegate和DataBinder的class,以便于Presenter在合适的时候创建和关联对应的Delegate和DataBinder。
8990

9091
其次,改动最大的Presenter实现类(太长的类只能贴代码,mac上居然没有可以滚动截取AndroidStudio内容的软件)
9192

9293
ActivityPresenter
94+
9395
```
9496
public abstract class ActivityPresenter<T extends IDelegate> extends AppCompatActivity {
9597
protected Map<String, DataBinder> binderMap ;
@@ -181,13 +183,13 @@ FragmentPresenter和ActivityPresenter类似,我Github的demo里有完整代码
181183

182184
Activity-Presenter
183185

184-
![这里写图片描述](//img-blog.csdn.net/20180320162155173?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3lrYjE5ODkxMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
186+
![这里写图片描述](https://ykbjson.github.io/blogimage/mvppicture2/activity_presenter_image.jpeg)
185187

186188
这个很简单啦,声明注解,构造Model,根据Model改变操作Delegate。
187189

188190
Delegate
189191

190-
![这里写图片描述](//img-blog.csdn.net/20180320162501394?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3lrYjE5ODkxMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
192+
![这里写图片描述](https://ykbjson.github.io/blogimage/mvppicture2/delegate_image.jpeg)
191193

192194

193195
这个就更简单啦,初始化View,定义一些操作View的方法供外部调用等等。
@@ -196,21 +198,21 @@ Delegate
196198

197199
ArticleDataBinder
198200

199-
![这里写图片描述](//img-blog.csdn.net/2018032016274785?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3lrYjE5ODkxMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
201+
![这里写图片描述](https://ykbjson.github.io/blogimage/mvppicture2/article_data_binder_image.jpeg)
200202

201203
ColorDataBinder
202204

203-
![这里写图片描述](//img-blog.csdn.net/20180320162859482?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3lrYjE5ODkxMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
205+
![这里写图片描述](https://ykbjson.github.io/blogimage/mvppicture2/color_data_binder_image.jpeg)
204206

205207
两个Model
206208

207209
Article
208210

209-
![这里写图片描述](//img-blog.csdn.net/2018032016301023?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3lrYjE5ODkxMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
211+
![这里写图片描述](https://ykbjson.github.io/blogimage/mvppicture2/article_model_image.jpeg)
210212

211213
ColorModel
212214

213-
![这里写图片描述](//img-blog.csdn.net/20180320163049678?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3lrYjE5ODkxMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
215+
![这里写图片描述](https://ykbjson.github.io/blogimage/mvppicture2/color_model_image.jpeg)
214216

215217
最后实现的效果就是,当Article属性改变,Presenter会找到ArticleDataBinder去操作Delegate,改变显示的长文本内容或者SnackBar的内容;当ColorModel改变的时候,Presenter会找到ColorDataBinder去操作Delegate,改变显示的长文本内容的字体颜色。到这里,算是解决了一个View对应多个Model,Model之间互不关联的需求吧。完整的实现请移步去我的github看代码。
216218

0 commit comments

Comments
 (0)
X Tutup