自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

犟驴的博客

"一名优秀的软件工程师,了解优秀软件设计的演变过程比学习优秀设计本身更有价值,因为设计的演变过程中蕴藏着大智慧啊。"-《重构与模式》

  • 博客(214)
  • 资源 (7)
  • 收藏
  • 关注

原创 Android内网离线Maven仓库搭建笔记

内网离线Maven仓库笔记一、初识依赖结构//示例com.android.tools.build:gradle:4.4.2//组成group-Id:artifact-Id:versiongroup-Id:com.android.tools.buildartifact-Id:gradleversion:4.4.2仓库结构m2repository-com--android---tools----build-----gradle------4.2.2-------g

2021-08-16 20:03:31 1043 1

原创 15.抽象工厂模式(大话设计模式kotlin版)

抽象工厂模式定义**抽象工厂(Abstract Factory)**:提供一个创建一系列相关或相互依赖对象的接口UML图AbstractProductA和AbstractProductB:是两个产品的抽象,它们可能有不同的实现。ProductA1、ProductA2和ProductB1、ProductB2:是两个抽象产品的具体分类的实现。AbstractFactory:是一个抽象工厂接口,它里面包含所有的产品创建的抽象方法。不同产品的创建,应该使用不同的工厂。基本实现代码AbstractF

2020-08-25 08:28:09 327

原创 20.迭代器模式(大话设计模式kotlin版)

迭代器模式定义**迭代器模式**(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。为不同的聚集结构提供第一项、下一个、是否结束、当前项等统一接口;UML图基本实现代码Aggregate:抽象聚集类abstract class Aggregate { abstract fun createIterator(): Iterator}ConcreteAggregate:具体聚集类class ConcreteAggregate : Ag

2020-08-24 00:29:26 274

原创 19.组合模式(大话设计模式kotlin版)

组合模式定义组合模式(Composite):将对象组合成树形结构以表示’部分-整体‘的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性(整体与部分可以被一致对待)UML图基本实现代码Component:为组合中声明对象的接口,在适当的情况下,实现所有类共有接口的默认行为。提供可用于访问和管理子部件的接口。/** * @create on 2020/8/23 22:42 * @description 为组合对象声明接口 * @author mrdonkey */abstr

2020-08-24 00:28:47 242

原创 18.备忘录模式(大话设计模式kotlin版)

备忘录模式定义**备忘录模式(Memento)**:在不破坏封装性的前提下,捕获一个对象内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态了。UML图基本实现代码Originator: 发起人,负责创建备忘录,用以记录当前的对象状态,并可以使用该备忘录恢复状态。class Originator { private var state: String = "on"//初始状态 private var caretaker: Caretaker = Car

2020-08-24 00:27:58 258

原创 16.状态模式(大话设计模式kotlin版)

状态模式定义状态模式(State):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了类。其主要解决的场景是:在一个方法中,当控制一个对象状态转换的条件表达式过于复杂/过长的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂/过长的判断逻辑简化。如,一个方法通过一个枚举类来执行不同的行为,当这个判断分支过长(责任过多,违背单一职责原则)就可以利用状态模式进行处理,以便于后期维护和拓展。UML 图基本实现代码Context:上下文class Context(va

2020-08-24 00:27:05 232

原创 12.外观模式(大话设计模式kotlin版)

外观模式定义**外观模式(Facade)**:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得子系统更加容易使用,方便外层调用。(提供一个接口对一系列操作进行封装,以便外层使用)它体现了依赖倒置原则与迪米特法则的思想。UML图基本实现代码Facde:外观类/** * @create on 2020/8/23 17:42 * @description 外观类,它需要了解所有的子系统的方法和属性,进行组合,以备外界调用 * @author mrdonkey *

2020-08-23 18:05:56 177

原创 9.原型模式(大话设计模式kotlin版)

原型模式定义原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并且通过拷贝(克隆clone)这些原型创建新的对象。核心思想:通过克隆对象来隐藏对象的创建细节。克隆的步骤原型对象实现Cloneable接口调用对象的clone()方法实现对象的克隆UML图基本实现代码Prototype:原型类/** * @create on 2020/8/23 16:16 * @description 原型类 * @author mrdonkey */abstrac

2020-08-23 16:49:05 218

原创 8.工厂方法模式(大话设计模式kotlin版)

工厂方法定义工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。简单工厂与工厂方法的区别简单工厂:提供一个工厂生产不同的物品;(一个工厂生产多种产品)工厂方法:为每种不同的物品都提供一个工厂进行生产;(一个工厂生产一样产品)当要在简单工厂方法里增加一种物品时,需要在它所提供的工厂里进行代码修改把新加的物品加入工厂中;而使用工厂方法,就可以单独为这种物品新建一个工厂,由客户端直接使用该工厂生产该物品即

2020-08-23 15:36:36 194

原创 24.责任链模式(大话设计模式kotlin版)

责任链模式定义责任链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送和接收者直接的过渡耦合。思想:将处理对象串成一条链,请求沿着这条链进行传递,直到有一个对象处理它为止。UML图Hanlder:处理者的抽象类,它提供为该处理者设置下一个处理者,或者之间处理该请求;基本代码实现Hanlder类/** * @create on 2020/8/23 13:45 * @description Hanlder 处理者类 * @author m

2020-08-23 14:31:54 451

原创 长按BottomNavigationView的子Item为什么会弹出的Toast?

快速了解BottomNavigationView依赖版本:implementation 'com.google.android.material:material:1.2.0'BottomNavigationView的层级结构:看图我们可以知道,BottomNavigationView有一个直接子View(BottomNavigationMenuView)里面装的是每一个Menu的Item(BottomNavigationItemView)这就是我们点击或长按item时的实际的View。

2020-08-20 20:23:17 2610 7

原创 7.代理模式(大话设计模式kotlin版)

代理模式定义代理模式(Proxy),为其他对象提供一种代理以控制这个对象的访问。代理就是真实对象的代表。UML结构图基本代码的实现Subject类 抽象主体类,定义一个request请求的抽象方法。/** * @create on 2020/7/5 22:46 * @description 抽象主体 * @author mrdonkey */abstract class Subject { abstract fun request()}RealSubject 真实的主体

2020-07-06 00:09:47 159

原创 6.装饰模式(大话设计模式kotlin版)

装饰模式

2020-07-05 23:39:21 168

原创 14.观察者模式(大话设计模式kotlin版)

观察者模式定义观察者Observer模式又叫发布-订阅Publish/Subscribe模式。它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题Subject对象。当这个主题对象在状态发生改变时,会通知所有观察者对象,使它们能够自动更新自己。UML图实现代码Subject抽象主题类,可支持增加、移除、通知观察者对象。/** * @create on 2020/6/27 23:12 * @description 主题类 抽象通知者 * @author mrdonkey */

2020-06-30 00:19:38 271

原创 17.在NBA我需要翻译-适配器模式(大话设计模式kotlin版)

适配器模式基本概念适配器:就是使得一个东西适合另外一个东西的东西。定义:适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。简单地概括,就是需要的东西在眼前,但是不能使用,短时间又无法改造它,于是我们就通过适配器来适配它适合我们使用。分类:类适配器模式: 通过多重继承对一个接口与另外一个接口进行匹配。对象适配器模式:由于Java/C#/VB.NET语言,只支持了类的单继承(C++

2020-06-14 16:29:29 293

原创 21.单例模式(大话设计模式kotlin版)

单例模式定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以通过一个全局变量使得一个对象可以被访问,但它不能防止被实例化多个对象。一个最好的解决方式是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。常用的几种写法懒汉式单例模式定义:在第一次被引用的时,才会将自己实例化。参考代码:/** * @create on 2020/6/14 12:10 * @description 懒汉式 单例模

2020-06-14 13:03:29 182

原创 设计模式六大原则(大话设计模式kotlin版)

单一职责原则 SRP(Single Responsibility Principle)定义:就一个类而言,应该仅有一个引起它变化的原因。(简单来说就是类的功能要单一)分析:如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能或削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化化时,设计可能会遭受到意想不到的破坏。该怎么分离?软件设计真正要做的许多内容,就是发现职责并把哪些职责相互分离。如果你有多一个动机去改变一个类,那么这个类就多一个职责,就应该

2020-06-14 09:58:48 235

原创 22.不同手机的软件该怎么分类 - 桥接模式 (大话设计模式Kotlin版)

引你入坑的编程题程序1:写一个程序:表示手机品牌的两种分类,搭载Android系统与IOS系统。程序2:在程序1的基础下继续编程:两种品牌的手机都有游戏与学习两个分支,学习区域包括B站等;游戏有:王者荣耀等。程序3:在程序2的基础上,如果再加上输入法分支、效率分支,并且再加一个‘鸿蒙’系统的手机品牌,该如何做?合成/聚合复用原则应用合成/聚合复用原则改写程序3桥接模式桥接模式基本代码桥接模式的应用...

2020-06-13 10:17:19 425

原创 25.世界需要和平 - 中介者模式 (大话设计模式Kotlin版)

世界需要和平国际形式错综复杂,国与国之间有时候因为利益摩擦、主权问题引发矛盾,进而发动战争。战争终究不可避免给人民带来无法弥补的伤痛!各个国家代表的利益不同,矛盾冲突是难免的。为了更好的维护国际关系,调和各个国家间的矛盾,催生了联合国:由各个国家的代表组成,维护国际和平与安全,解决国间经济、社会、文化、人道主义性质的问题。联合国的成立后,地球至二战后没有波及世界范围的战争,它对世界和平的贡献不可估量。国与国之间的关系类似于不同对象与对象之间的关系,那么就要求对象之间需知晓其他所有对象。一般为增加

2020-06-07 23:14:00 184

原创 13.好菜每回味都不同 - 建造者模式 (大话设计模式Kotlin版)

情景小明的难堪小明晚上下班去大排档吃宵夜,点了一份炒面,味道不够估计是忘了放盐;吃着不尽兴,再点了一份炒饭,结果却太咸了。小明真难!小明感叹,这档口以前经常光顾,为什么今天这么难吃 ?可能换了厨师了吧,或者厨师今晚心情不好哈哈。吃了几家肯德基与麦当劳,也没见鸡腿堡口味有很大差异呀!KFC 与 McDonald 在我国比许多中式快餐都成功,原因是他们有一套完整规范的工作流程,原料放多少,加热几分钟,放几克盐,都有严格规定;这条流程是每个店面都严格遵照执行的。许多餐馆就做不到这点,比如桂林米粉,在城市A吃

2020-06-07 11:38:55 256

原创 掌握Android阅读源码的两种简单方式

最近在看《Android开发艺术探索》书籍,想突破一下自己知识的瓶颈,发现书中有许多知识都结合的源码进行讲解的。源码是我一直很畏惧的区域,很多时候遇到问题在网上搜索解决方式时,遇到长篇大论说源码的,我就会看不下去。如果我想让我的技术得到进阶,那必须得慢慢去剖析它...

2020-05-25 22:36:15 2270 1

原创 26.项目多也别傻做 - 享元模式 (大话设计模式Kotlin版)

项目多也别傻做问题情景最近忙得很,在给一些私营业主做网站,做好一个产品展示网站需要一个星期,包括购买服务器和搭建数据库!但是随着外快越来越多,他们的需求有的是新闻发布式的网站、有希望是博客形式的,还有的只是在原来产品展示的图片上加说明形式的,而且他们都希望费用大大降低。他们的需求差别不大,难道我必须给n个不同形式的网站copy一套代码和创建100个数据库吗?如果是那样的话,如果出现bug你岂不是要修改n遍,那维护量就太可怕了!用传统的方式来网站WebSite 网站类/** * @crea

2020-05-24 11:46:11 261

原创 2.商场促销 - 策略模式 (大话设计模式Kotlin版)

编程题:制作商场收银软件利用编程做一个简易的商场收银系统,营业员根据客户购买的商品的单价与数量,向客户收费。快速实现马上想到的解决思路:无非是提供两个输入,分别对应商品单价与数量,然后通过计算得到费用输出!v1.0代码/** * @create on 2020/5/19 22:02 * @description 收银客户端 * @author mrdonkey */class Client { companion object { @JvmStatic.

2020-05-20 22:03:05 487

原创 10.考题抄错会做也白搭-模板方法模式 (大话设计模式Kotlin版)

内容大纲面试题重复=易错+难改提炼后的代码模板方法模板方法的特点面试题老师布置了一次金庸小说的考卷试题,要求甲乙学生抄题并给出对应答案,请用编程语言实现它。重复=易错+难改下面实现的UML图这不简单嘛,分别创建两个类:甲抄的试卷、乙抄的试卷甲抄的试卷/** * @create on 2020/4/24 14:29 * @description 学生甲抄的试卷 * ...

2020-04-24 16:00:49 346 1

原创 1.代码无错就是优?-简单工厂模式 (大话设计模式Kotlin版)

内容大纲面试受挫初学者的代码利用封装的实现利用继承和多态的方式实现松耦合简单工厂模式的应用面试受挫面试题:“用任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。”初学者的代码以下的程序是利用计算机的方式去思考。看起来并没有什么大的问题,也能得到正确的结果,但是这种思维却使我们的程序只能满足实现当前的需求,不符合易维护、易扩展、易复用,达不到高质量代码的...

2020-04-24 12:18:28 187

原创 28.男人和女人-访问者模式(大话设计模式Kotlin版)

情节分析例子与代码均来自《大话设计模式》程杰,简单记录加深印象。举一个生活中的场景:男人和女人的区别男人成功时,背后多半有一个伟大的女人。女人成功时,背后大多有一个不成功的男人。男人失败时,闷头喝酒,谁也不用劝。女人失败时,眼泪汪汪,谁也劝不了。男人恋爱时,凡事不懂也要装懂。女人恋爱时,遇事懂也要装作不懂。男人结婚时,。。。女人结婚时,。。。...

2020-04-19 10:47:00 283

原创 23.烤羊肉串带来引来的思考-命令模式(大话设计模式Kotlin版)

例子与代码均来自《大话设计模式》程杰,为了记录加深印象。举一个生活中的场景(请发挥想象力):烧烤摊 vs 烧烤店混乱不堪的烧烤摊:“因为排队要吃烤肉的人太多了,都希望能最快的吃的烤肉,烤肉老板一个人,所以场面有些混乱”(请求排队)“老板一个人,来的人一多,他也就未必记得住谁付没付过钱,要几串,要不要????等待”(未记录请求日志)“客人等待不耐烦,需要退款!客人发现不熟请求重新烤”...

2020-04-18 18:08:35 290

转载 LeetCode 617. Merge Two Binary Tree (合并两个二叉树)

Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.You need to merge them into a new binary tre...

2019-02-28 22:39:18 226

原创 两种方法将SVG转换成 android VectorDrawable XML资源

1.SVG资源下载网站 阿里巴巴矢量图标资源库 Font Awesome 一套绝佳的图标字体库和CSS框架 material design 谷歌官方图标库  mac系统下的svg软件2.SVG转化成android中的XML工具(第一种方法)百度云盘链接: Android SVG to VectorDrawable 提取码: ns26 3.使用步骤下载好工具后解压,直接打开i...

2019-02-27 17:06:05 6352 1

原创 IntellIj 2018.3 重新同步gradle时出现java.lang.AssertionError 错误

之前好好的项目,重新打开后就报红,很多包都找不到!然后重新sync gradle 出现这个错误。在stackoverflow中找到解决方案原Issue:IntellIj 2018.3 java.lang.AssertionError when refresh gradle project解决方式:Preference->Build、Execution、Deployment...

2019-02-26 17:11:57 3104 3

原创 解决:(聊天布局)点击底部EditText 弹出软键盘遮挡住上方RecyclerView的内容,实现软键盘将RecyclerView上移效果

最终效果: 我的页面整体是一个LinearLayout 里面由二个部分组成上面是一个协调布局,底部是一个线性布局问题1:点击EditText键盘不会把底部EditText顶上去,怎么解决方法有很多,我这里给一个方法根部局设置    android:fitsSystemWindows="true" 的属性即可问题2:点击进入聊天界面总是显示在最底部当首次进入或者数据集发...

2019-01-11 23:34:08 7529 3

转载 Intellij IDEA 导入个推jar包 报错java.lang.NoClassDefFoundError

参考:Intellij IDEA 报错java.lang.NoClassDefFoundErrorIntellij IDEA使用的是Gradle,发现个推服务器SDK没有Gradle的导入方式,不会用Maven,只好选择jar包方式导入却遇到了一个坑.想通过导入jar包方式使用个推的SDK,直接在File->Project Structure->Modules->...

2019-01-10 13:29:33 5992 3

转载 理解MVP——初次体验MVP模式开发

一、当年的MVC参考:Android开发模式之MVC全称:Model-View-Controller Model:数据处理部分 Controller:逻辑的处理 View:界面显示部分 二、什么是MVP?参考:Android开发模式之MVPMVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,...

2018-12-30 14:17:29 277

转载 Restful是什么?

转载:http://blog.51cto.com/jianboli/2072796原来经常听说restful方式,但是自己一直没有搞懂什么是restful,虽然平时也在使用。我的理解大概是:rest是一种规范。即参数通过封装后进行传递,响应也是返回的一个封装对象。restful 是一种接口API的实现形式。我们常常定义的spingMvc的接口一般都是restful的实现形式。res...

2018-12-29 22:36:13 2118

转载 Android Studio 报错:More than one file was found with OS independent path 'META-INF/xxxxxx'的解决办法

转载:https://blog.csdn.net/realliuning/article/details/80010591转载:https://blog.csdn.net/wa172126691/article/details/84863171今天在Android Studio中编译工程的时候,遇见了一个奇怪的问题,报错如下:More than one file was found ...

2018-12-26 13:27:40 3082

原创 android进阶4step4:Android实战开发——事件分发机制

Android事件分发机制为什么需要事件分发机制?比如:上图Button(View)的ViewGroup是FrameLayout2FragmeLayout2的ViewGroup是FragmeLayout1当点击Button时,所触发的事件到底是交给谁来处理呢?常见的事件分发分为两种冒泡(自下而上的过程)  View—>ViewGroup—>Activ...

2018-12-25 14:46:23 321

转载 android进阶4step3:Android常用框架——友盟推送简单使用(官翻)

友盟官方:快速集成文档还有之前写的极光推送的简单使用:Android常用框架——极光推送的简单使用使用步骤:第一步:.登录注册友盟的账号,并绑定邮箱   官网第二步:以下拷贝自友盟官方文档前言【友盟+】消息推送SDK 5.0.2 集成文档。此文档适用于Android Studio在线集成,如您需要离线下载SDK方式集成,请参考手动集成文档-Android Studio...

2018-12-21 17:08:23 1283

原创 android进阶4step3:Android拓展——WebView 的使用

1、WebView 是什么?WebView 的使用WebView 是一个基于 WebKit 引擎、展现 web 页面显示 HTML 内容的控件。2、WebView 的作用是什么?1)显示和渲染 Web 页面 2)直接显示 html 页面(网络或本地 assets 中) 3)与 JavaScript 交互处理3、WebView 如何使用?1)在 AndroidManif...

2018-12-21 14:29:18 167

原创 原 android进阶4step3:Android常用框架——极光推送的简单使用

官方文档:https://www.jiguang.cn/push SDK下载:http://docs.jiguang.cn/jpush/resources/ 官方Github:https://github.com/jpush这篇文章主要介绍是怎么使用极光推送其他文章:手把手带你全面了解Android消息推送 解决方案 Android消息推送:第三方消息推送平台详细解析 Andro...

2018-12-21 12:37:30 1375 2

原创 android进阶4step3:Android常用框架——EventBus框架

Android Event Bus学习步骤EventBus简介 EventBus方法介绍 EventBus的实际应用 总结EventBus简介以下来自:EventBus主页开源项目地址:https://github.com/greenrobot/EventBusEventBus主页:http://greenrobot.org/eventbus/简介:...

2018-12-19 23:08:53 270

platforms/android-28/android.jar

替换sdk路径下/platforms/android-28/android.jar,能够解决在android studio 看源码部分类报红及能够正常编译项目。解决替换as后报错:Failed to transform file 'android.jar' to match attributes {artifactType=android-mockable-jar, returnDefaultValues=false} using transform MockableJarTransform

2020-05-25

platforms/android-29/android.jar

替换sdk路径下/platforms/android-29/android.jar,能够解决在android studio 看源码部分类报红及能够正常编译项目。解决替换后报错:Failed to transform file 'android.jar' to match attributes {artifactType=android-mockable-jar, returnDefaultValues=false} using transform MockableJarTransform

2020-05-25

sources/android-28

sources/android-29,提供给大家,方便大家下载,如果无法满足,请自行搜索其他下载方式

2020-05-25

android-29.zip

sources/android-29,提供给大家,方便大家下载,如果无法满足,请自行搜索其他下载方式

2020-05-25

platforms/android-28

platforms/android-28,提供给大家,方便大家下载,如果无法满足,请自行搜索其他下载方式

2020-05-25

android-29.zip

android sdk/platfroms/android-29,提供给大家,方便下载,如果无法满足,请自行搜索其他下载方式。

2020-05-25

expandableListViewDemo

基于ExpandableListView、SQLite、网络下载,Json解析

2018-10-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除