设计模式
文章平均质量分 78
锐湃
这个作者很懒,什么都没留下…
展开
-
单例模式(双检锁)
但如果出现了指令重排,即(3)先执行了,那么B线程那么在第一个null的检查的时候,就有可能看到这个实例不是null,这时候直接拿来使用就会出现问题。“观察加入volatile关键字和没有加入volatile关键字时所生成的汇编代码发现,加入volatile关键字时,会多出一个lock前缀指令”上面的三步,无论在A线程当前执行到那一步骤,对B线程来说可能看到A的状态只能是两种1,2看到的都是null,3看到的非null,这是没问题的。确定volatile这个关键字多少会带来一些性能影响吧。...转载 2022-07-26 14:43:11 · 333 阅读 · 0 评论 -
MVP模式使用示例详解
什么是MVP模式? 这个MVP可不是腾讯游戏《王者荣耀》中的MVP。我们今天要讨论的MVP其实同MVC一样,是一种编程模式和思想,也许更准确地讲是一种架构。MVP和MVC的区别 提到MVP模式,大家自然避免不了要和我们以前常用的MVC模式进行对比。关于MVP和MVC的区别,此处我们就不重复造轮子了,给大家推荐两篇文章:两张图看懂Android开发中MVC与MVP的区别Android中MVP模式讲解及实践MVP模式的介绍先上两张示例图(网上的图大同小异,都一样)mvp...转载 2022-04-15 20:42:38 · 2149 阅读 · 0 评论 -
Airbnb 再出力作,开源 Android 架构新方案:MvRx
讲真的,Airbnb 于开源界,真是不可忽视、贡献巨大的存在。截止目前,其在 GitHub 网站已经开源 165 个项目,包括大名鼎鼎的移动端跨平台动画解决方案 Lottie 仓库。近日,Airbnb 公司的 GitHub 主页又新添一员:MvRx 。介绍 MvRx 之前,不妨看看这个项目诞生的背景。注意:为了表述上的方便,后文使用第一人称代表 Airbnb 公司。引入随着旅游业的兴盛,Airbnb 正以前所未有的速度向前发展,越来越多的人使用 Airbnb 产品开始旅行。仅这一年,我们..转载 2022-03-11 11:12:43 · 594 阅读 · 0 评论 -
从android中学习23种设计模式
前言我曾经也有个决心,想把23种设计模式全部记住,但总是背了又忘,忘了又继续背,总是记不住。虽然网上有一大堆教学,分析,自己写一遍,比看十遍深刻多了。顺便学几个单词。话说回来,我们无时无刻都在根据设计模式写代码。1设计模式的七大原则尽量用最简单的话描述1、开闭原则(Open Closed Principle)对类的扩展是开放,对修改关闭。在程序需要扩展的时候,对于一个类,不要去修改原来的代码,而是通过继承的方式去扩展这个类。目的:降低维护风险...转载 2021-06-04 14:36:38 · 130 阅读 · 0 评论 -
状态模式
原文链接 作者:Pankaj Kumar 译者:f0tlo 状态模式是一种行为设计模式。适用于当对象的内在状态改变它自身的行为时。如果想基于对象的状态来改变自身的行为,通常利用对象的状态变量及if-else条件子句来扮演针对对象的不同行为。状态模式Context(环境)和State(状态)分离的方式既保证状态与行为的联动变化,又使得这种变化是条理明晰且松耦合的。Context是包含转载 2016-08-19 10:35:08 · 283 阅读 · 0 评论 -
JAVA设计模式之享元模式
解释一下概念:也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。比如说一个文本系统,每个字母定一个对象,那么大小写字母一共就是52个,那么就要定义52个对象。如果有一个1M的文本,那么字母是何其的多,如果每个字母都定义一个对象那么内存早就爆了。那么如果要是每个字母都共享一个对象,那么就大大节约了资源。 在Flyweight模式中,由于要产生各种各样转载 2016-09-19 15:05:52 · 288 阅读 · 0 评论 -
中介者模式
定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。类型:行为类模式类图:中介者模式的结构 中介者模式又称为调停者模式,从类图中看,共分为3部分: 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几转载 2016-09-20 16:25:52 · 202 阅读 · 0 评论 -
Java 设计模式 之 中介者模式(Mediator)
中介者的功能非常简单,就是封装对象之间的交互。如果一个对象的操作会引起其他相关对象的变化,或者是某个操作需要引起其他对象的后续或连带操作,而这个对象又不希望自己来处理这些关系,那么久可以找中介者,把所有麻烦扔给它,只要在需要的时候通知中介者,其他的就让中介者去处理就可以了。反过来,其他对象在操作时,可能会引起这个对象的变化,也可以这么做。最后对象之间就完全分离了,谁都不直接跟其他对转载 2016-09-20 16:36:38 · 301 阅读 · 0 评论 -
《JAVA与模式》之备忘录模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述备忘录(Memento)模式的: 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原转载 2016-09-21 14:19:49 · 297 阅读 · 0 评论 -
《JAVA与模式》之解释器模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述解释器(Interpreter)模式的: 解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式的结构 下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示:模式转载 2016-09-22 10:45:46 · 247 阅读 · 0 评论 -
《JAVA与模式》之原型模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述原型(Prototype)模式的: 原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是选型模式的用意。原型模式的结构 原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过转载 2015-02-06 19:01:17 · 340 阅读 · 0 评论 -
Java开发中的23种设计模式分类
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真转载 2015-02-10 16:19:23 · 429 阅读 · 0 评论 -
android中的mvp模式(二)
1. 需求,这个是《android开发必知的50个诀窍》一书中的mvp章节的需求。在splash页面中,判断是否有网络连接,有则跳到下个页面,无则弹出一条消息通知用户,同时在检查网络是否正常的期间显示一个进度条。2. 类目录结构3. model接口和实现 public interface INetConnect { boolean isNe转载 2016-08-18 15:14:55 · 270 阅读 · 0 评论 -
android中MVP模式(一)
1. 明确需求,界面如下:可存,可根据id读取数据。包结构图2. 建立bean public class UserBean { private String mFirstName; private String mLastName; public转载 2016-08-18 14:51:10 · 290 阅读 · 0 评论 -
设计模式之访问者模式
访问者模式VisitorCRM 客户关系管理类型:企业客户,个人客户功能:提出服务申请、客户偏好分析、客户价值分析问题:系统难以理解、不便于扩展定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作Visitor:访问者接口,为所有的访问者对象声明一个visi转载 2016-03-02 22:43:13 · 350 阅读 · 0 评论 -
设计模式之装饰模式
装饰模式 (Decorator) (包装模式Wrapper)定义:动态的给对象添加一些额外的功能(比继承更加灵活)人靠衣装,佛靠金装透明的给对象增加功能功能组合为什么装饰类需要继承被装饰类,因为装饰类还可以再一次被装饰角色Component 抽象组件,被装饰的原始对象ConcreteComponent 组件的具体实现,被装饰的具体对象转载 2016-03-02 23:03:34 · 288 阅读 · 0 评论 -
设计模式之访问者模式+组合模式
访问者模式VisitorCRM 客户关系管理类型:企业客户,个人客户功能:提出服务申请、客户偏好分析、客户价值分析定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作Visitor:访问者接口,为所有的访问者对象声明一个visit方法,用来代表为对象添加的功能,理论转载 2016-03-02 23:43:06 · 1950 阅读 · 0 评论 -
设计模式六原则
设计原则设计模式是手段,设计原则是思想指导指导建议,很多情况无法做到完全遵守很多时候要有意无意打破部分原则,所以设计就是一种权衡“设计就是一种危险的平衡艺术”(业务、难度、性能)1.单一职责原则SRP(Single Responsibility Principle)一个类应该仅有一个引起它变化的原因2.开放-关闭原则OCP转载 2016-03-02 23:48:10 · 413 阅读 · 0 评论 -
Builder设计模式
Builder设计模式一般会采用链式编程结构案例分析?构建一台电脑(内存、CPU、显卡等等.....)内存:ram(运行内存)和rom(非运行内存) 分为了一些角色Builder-->抽象类(规范产品组装)-->案例中Builder接口ConcrateBuilder-->具体组装产品类-->案例MacBookProBuilderProduct--->具体转载 2016-07-27 16:58:35 · 333 阅读 · 0 评论 -
单例模式的三种写法
/** * 饿汉式-我不管你用不用我都提前最备好 * 浪费内存 * */public class Singleton { //传参数没法做 private static Singleton instance = new Singleton(); private Singleton() { } public static Si转载 2016-07-19 10:38:52 · 3462 阅读 · 1 评论 -
《JAVA与模式》之原型模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述原型(Prototype)模式的: 原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是选型模式的用意。原型模式的结构 原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过原型实例创建转载 2016-08-15 15:08:01 · 275 阅读 · 0 评论 -
设计模式之桥接模式
桥接模式 Bridge定义:将抽象部分与实现部分分离,使得他们都可以独立地进行变化好处:简化类结构Abstraction:抽象部分RefinedAbstraction:具体的抽象实现(优化的抽象部分)Implementor:实现部分ConcreteImplementorA/ConcreteImplementorB 具体的实现场景一转载 2016-03-02 22:15:02 · 363 阅读 · 0 评论 -
《JAVA与模式》之命令模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述命令(Command)模式的: 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。 命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式的结构 命令模式是对命令的封装转载 2016-08-16 10:59:17 · 276 阅读 · 0 评论 -
迭代器模式
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。类型:行为类模式类图:如果要问Java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码 public static void print(Collection coll){ Iterator it = coll.iterator(转载 2016-08-18 10:49:48 · 248 阅读 · 0 评论 -
设计模式之责任链模式
任链(职责连)模式(Chain Of Responsibility)定义:发起一个请求,使得多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止场景:多个对象处理同一个请求,具体由哪一个对象来处理,在程序运行过程中动态决定角色:Handler 抽象处理者转载 2016-03-02 22:30:47 · 326 阅读 · 0 评论