- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 Android MVP架构(3)MVP框架的使用
上一篇中主要介绍了MVP框架的基本实现过程,那么实际过程中如何使用MVP框架呢。其实非常简单。MVP架构的主要目的就是进行解耦,同时使各部分的代码逻辑层次分明,分工明确。鉴于这种思想,需要对功能类似的模块进行规划处理,以最基本的登录注册功能为例,需要创建的目录如图:可以看到,对比传统的MVC架构,代码文件彷佛增加了不少,但是层次却更加分明了,通过严格的将模块分为MVP三层结构,使得拓展以及维护的可行性增加,阅读性也更加良好。以拓展一个登录功能为例,需要执行的步骤为: ILoginVie
2020-06-27 15:04:11 546 1
原创 Android MVP架构(2)使用注解实现一个MVP框架
上篇我们说到MVP的一些相关概念:Android MVP架构(1)概念介绍在弄清楚了MVP架构的基本原理后,我们就可以着手去自己实现一个MVP架构项目了。目前市面已有不少成熟的MVP框架,本篇仅作学习以及研究探讨使用,不作任何对比。使用自定义注解实现注入:由上篇的架构图可以看出,Presenter和Model之间会进行数据的交互,所以Presenter里往往会持有Model对象的引用,而在Activity层,我们是需要调用Presenter来触发View层的回调结果的。简而言之就是:Activi
2020-06-27 14:28:14 564 1
原创 Android MVP架构(1)概念介绍
Android常见的架构模式主要有以下三种:MVC、MVP、MVVM。其中,MVP以其优良的解耦以及模型与视图完全分离的特性,被最为广泛的应用。MVP(Model-View-Presenter)是MVC的改良模式,和MVC的相同之处在于:Controller/Presenter负责业务逻辑,Model管理数据,View负责显示只不过是将 Controller 改名为 Presenter,同时改变了通信方向。MVP架构如下图所示。由上图可以看出,MVP具有如下特点:M、V、P之间双向
2020-06-27 13:28:33 447 1
原创 新版chrome跨域问题:cookie之SameSite属性
最近在使用前后端分离开发的时候,遇到了一个诡异的问题,无论如何设置跨域,同一个页面获取到的session始终不一致。事情的起始大概是这样的:首先说一下我的业务逻辑,其实就是最常见的登录功能,获取验证码后存入session,用户提交登录时,将用户提交的验证码与从session里获取的验证码进行对比;功能简单,也好理解。可是却遇到了如下一系列问题:发现问题:登录界面前后端分离,ajax...
2020-03-16 16:00:02 20712 5
原创 springboot设置跨域的几种方式
在进行web项目开发的时候,前后端分离往往是很常见的开发方式,而说到前后端分离,最常见的问题无非就是跨域了。如何解决跨域问题几乎已经成为了web开发的必修课。本文将提供几种常见的基于springboot的跨域解决思路,鉴于作者水平有限,若有错误,欢迎指正。单个Controller及方法: @CrossOrigin作为一个强大的注解,特点就是不仅支持在controller中设置,...
2020-03-16 15:03:45 3541
原创 仿springboot @Autowired自动注入
使用springboot也有一段时间了,最近在学习java反射的时候突发奇想,觉得可以用反射来做一个简单的自动注入。我们都知道,Spring在启动的时候会创建一个IOC容器,并将创建好的bean放到容器里进行托管,在需要使用的时候就从容器里面获取,不需要重新创建。而在springboot项目中,service层只是负责业务逻辑,真正的执行是在Impl层。而且接口是不能被实例化的。因此不难猜测,...
2020-02-08 00:29:53 1114 2
原创 dagger2无法生成daggerXXXcomponent原因分析
初接触dagger,在生成daggerXXXcomponent的过程中踩了不少坑,因此在网上搜罗了可能的原因以及解决方法,并作记录防止再次踩坑。无法生成daggerXXXcomponent的原因可能有多种,下面先列出笔者在网上找到的可能的原因:1.未重新构建项目;网上最多也是最简单的原因:DaggerXXXComponent需要成功编译项目才会生成解决方法:如果是Andro...
2020-01-24 01:17:23 6810
原创 Error:Gradle DSL method not found: 'apply()' 产生原因以及解决方法
原因:项目或工程的Build.gradle文件的编码格式为UTF-8 +BOM格式解决方法:通过NotePad++ >> 编码 >> 转为UTF-8无BOM格式 >> try again
2019-09-24 14:15:29 3282
原创 关于Java单例模式
单例模式可以说是java中很常见的设计模式了,单例模式的实现可以分为很多种,为了方便演示,我们首先创建一个SingleInstance类来进行说明,需要注意的是,既然是单例模式,那么很重要的一点肯定就是不能被实例化,我们可以通过创建一个私有的空的构造方法来实现。public class SingleInstance { //私有构造 防止实例化 private Singl...
2019-09-22 17:22:45 251
原创 Kotlin自定义一个简单实用的标题栏
标题栏是每个APP必不可少的一部分,通过它我们可以实现导航以及添加一些操作事件等等。下面分享一个我常用的标题栏控件。先来说一下大概的思路吧,考虑到标题栏一般具有比较多的控件,例如左右的图标按钮或者文字,以及最重要的标题等,这里我选择了RelativeLayout来作为所继承的父类,当然也可以使用LinearLayout甚至是ViewGroup等等,这些都是可以的,只是可能会相对来说麻烦一点。废...
2019-08-07 15:53:10 1624
原创 kotlin Array和List互转
最近刚接触kotlin,将一些心得体会记录一下。在使用kotlin之前,我们先来看一下java是怎么实现的:List —>Array: List<String> a = new ArrayList<>(); a.add("aaa"); a.add("bbb"); a.add("ccc");...
2019-08-07 11:38:22 20329
原创 Android自定义签到日历控件
之前一直想写一个android的签到控件,参照了网上的博客,决定自己写一个比较全的。在此感谢Android日历签到,超级简单的实现方式带来的启发。先来看一下实现效果:整体的思路是这样的:选择使用GridView作为日期的显示,但是需要注意的一点就是需要给GridView设置一个最大尺寸,这个我们可以通过继承GridView,重载里面的方法来进行实现。代码如下:...
2019-06-20 12:08:06 1133
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人