设计模式
文章平均质量分 72
暴打小女孩
程序员菜鸟
展开
-
Android 多Fragment共享数据的MVP模式实现
前言这里不在介绍MVP模式的概念。只讲一些自己开发中对MVP模式的体会,和一个Activity多个Fragment场景下MVP的应用,和需要注意的问题。注意问题【1】首先第一点,无论是什么模式,你都需要贯彻面向接口化编程的思想 ——–M, V,P三层之间都通过Interface实现依赖,这是实现解耦最简单的办法。【2】MVP的设计思想除了解耦意外,还要实现的一个目的是稳定和复用。(在V很容易变化的环原创 2015-10-21 20:45:59 · 8483 阅读 · 0 评论 -
单例没你想的那么简单
单例没你想的那么简单单例是最简单的几种设计模式之一,但它远没有你想的那么简单!==============应用简单的提一下,哪里需要使用单例:线程池、缓存、网络等等需要保持全局作用域且唯一的对象。但是这里需要提一下,什么不适合申明为单例:View。View是比较重的对象,占内存较普通对象更多,而View更可能引用其他资源,而导致其他资源也无法被释放。懒汉:private static NetWork原创 2016-03-22 14:56:23 · 390 阅读 · 0 评论 -
工厂的争议
工厂的争议说起设计模式,你第一个所想到的几个设计模式里,一定有工厂模式。因为它既简单方便,见效快。但像所有设计模式一样,它也有着争议。============================工厂的滥用第一次明确的学习接触工厂模式,是在大学里学习JavaEE开发。老师的示例代码里,分别给Business,Dao设置了工厂,用来创建Business,Dao。就像这样:class BusinessFact原创 2016-03-22 14:56:50 · 395 阅读 · 0 评论 -
模板,新手读代码砸电脑的诱因
模板,新手读代码砸电脑的诱因模板是一个很初级的设计模式,很多时候我们不知不觉就已经使用了。很多时候新手问你的问题,是模板引起的?=============定义模板的官方定义是:在父类中定义一个算法框架,而将算法的具体实现延迟到子类中,使得可以在不改变算法结构,而改变算法的某些特定步骤。新手对代码懵懵懂懂的原因在传统的面向过程编程与初级的代码学习中,除了官方API是我们死记硬背的,模块与模块之间的依赖原创 2016-03-22 14:57:20 · 650 阅读 · 0 评论 -
只关心零件的Buider
只关心零件的Buider建造者模式的初衷是为了将对象的构建与表示分离,封装一个对象的不懂表现方式。但往往实习使用中,我们的需求并没有那么多的表现方式,且遇到最多的Builder也不是定义中的Builder。==============定义传统定义:将复杂对象的构建与它的表示分离,使得同样的构建有着不同的表现方式。实际使用的Builder:依照赋予的不同参数,去创建不同表现的对象。这是我们最常见到的B原创 2016-03-22 14:58:06 · 450 阅读 · 0 评论 -
拒绝装饰模式
拒绝装饰模式装饰模式是委托的一种,它更注重的是对原有对象功能的扩展。所以是一个使用频率较高的模式。但是!今天我要告诉你,在一些时候,你应该拒绝它的“诱惑”==============背景通常,在我们的程序中都会存在两类javaBean:Entity(实体类)与Dto(数据传输类)。其中Entity是最普通的javaBean,只有属性与setter/getter方法,通常作为数据持久化操作。而Dto负原创 2016-03-22 14:58:52 · 380 阅读 · 0 评论 -
设配器模式不止是补救,有时更像是一个创造者
设配器模式不止是补救,有时更像是一个创造者适配器模式的官方应用场景是在软件开发后期,应对功能扩展后,新的类结构无法对应之前的接口,从而采用的一种补救措施。然而如果你只记住了这个,你可能会错过一个很重要的技巧。================定义将一个类的接口变换成客户端所期待的另一个类的接口,从而使原本因接口不匹配而无法一起工作的两个类可以匹配。咬文嚼字必须要承认的是适配器模式是一个非常好的补救模式原创 2016-03-22 14:59:35 · 435 阅读 · 0 评论 -
责任链的方法化
责任链的方法化责任链模式是一个非常简单容易理解的模式。在书中的介绍中,责任链的使用时用类似链表的方式将对象建立起一条链。这样的方式怎么说呢?有好有坏吧。===================概念责任链模式:将多个处理请求的对象按照优先级连成一条链,并沿着该条链处理请求,使得多个对象都有机会处理。应用场景分析我们先从书中(设计模式之禅)的最后例子开始分析。案例:注册时有两类注册:VIP用户和普通用户(原创 2016-03-22 15:00:08 · 491 阅读 · 0 评论 -
观察者的前世今生
观察者的前世今生观察者是一个非常棒的消息通信机制模式,许多优秀的框架都使用了观察者模式的思想。====================观察者模式的前生这里我想借着观察者,聊聊回调。因为这真的是一个有趣的东西。而它也正是观察者的前生。我把回调理解为开发者的一个小进阶。为什么这么说呢?回调解决了所有初级程序猿都会遇到棘手问题: A → B B → A A调用B,B如何反过来调用A新手通常都会使用原创 2016-03-22 15:00:57 · 665 阅读 · 0 评论 -
从开闭原则,讲讲初级的代码设计
从开闭原则,讲讲初级的代码设计像所有小菜鸟一样,在看完了设计模式的6大原则以后,我以为我掌握了面向对象的绝世秘籍,迫不及待的连后面的设计模式都不愿意看了,因为我知道、书上说设计模式就是对6大原则的诠释和应用。从此~开始跌跌撞撞重构与架构之路。================= 又是啰嗦的前景描述,着急的直接看后面的总结吧。大概是在半年以前开始接触设计模式吧。因为被垃圾代码的维护彻底摧垮了内心,开始原创 2016-03-22 14:55:45 · 1123 阅读 · 0 评论 -
迪米特是触摸架构的开始(我瞎说的)
迪米特是触摸架构的开始(我瞎说的)为什么这么说呢?因为:解耦解耦解耦啊(重要的事情说三遍)。额……解耦急速架构了?不不不,我可没这么说,触摸架构嘛!====================迪米特法则:最少知识法则,一个对象应该对其他对象有最少的理解。说是这样说,其实真正用起来还是别别扭扭。我们换个角度讲:一个良好的架构,模块与模块之间、层与层之间完全像是一个黑盒子连着一个黑盒子。模块与模块只关心输入原创 2016-03-22 14:53:38 · 432 阅读 · 0 评论 -
设计模式——6大设计原则笔记
今天刚开始系统化的学习设计模式。比起一年前什么基础都没有看的一头雾水,现在终于能懂了!!但还是理解的不太好。所以即时总结一下,以后经常拿起来巩固。 本文只是做了一部分概念总结性工作,且没有代码,类似于笔记。随着反复阅读,将会逐渐丰富。具体内容还请详阅 【设计模式之禅】6大设计原则:单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。 (这个真不是一两天就能懂得啊,刚原创 2015-06-02 11:38:45 · 504 阅读 · 0 评论 -
类MVP实践报告
类MVP实践报告为什么要叫(类)MVP呢?因为MVP只是一种设计思想,大概的定义普及后,到了每个人手里都有不同的理解。想想当今的MVC吧,光一个C就能吵成一片,别说M和V的交互了。下面讲的所有MVP都属于我自己的理解,为不引起定义上的无意义争执,这里用到了“类似MVP”的概念。至少到现在为止,我用的还是很爽的嘛~克守常规是非常愚蠢的一件事=====================目录1.MVP基本概原创 2016-03-22 14:46:21 · 793 阅读 · 0 评论 -
一句话设计模式
一句话设计模式如果有面试官问:你知道6大原则是哪6大吗?你应该能一一列举出来。又问:你能说出23种设计模式吗?你有点艰难了。再问:列出每种设计模式,并说出他们的概念,你要奔溃了……模式很多,书很厚,不能每次都翻书,我需要精简的总结一下.=================单一职责原则无论比变量、方法、类、接口等等,他们的职责或代表的含义负责的功能都应该是单一独立的,一个模块不能负责超过两种事情,一种事原创 2016-03-22 14:48:41 · 456 阅读 · 0 评论 -
类才有设计模式?用方法不行么?
类才有设计模式?用方法不行么?我以为,一定程度限制新手很难应用设计模式到实际中的因素之一便是:设计模式是基于面向对象思想的,书中关于设计模式讲解均以类、接口为实现基础,可在实际使用中,新手对面向对象理解不够透彻,有限的开发经验很难想到需要那么多类的应用场景,由此造成无从下手的现状。==============真的必须要依赖于类吗?不是的,虽然大部分设计模式都需要继承、接口等来实现。但是缩小应用场景,原创 2016-03-22 14:49:13 · 456 阅读 · 0 评论 -
因为够懒,所以我严守单一职责
因为够懒,所以我严守单一职责其实想把6大原则放一起说的,但是写开了以后才发现,光一个原则就能扯出一大通东西来,还是分开说吧。===========哪里单一?单一嘛,大家都懂的,只干一个事。但是,哪里需要单一呢?只有类和接口? 任何东西都要单一! 容我给你从小了慢慢往大了扯~变量要单一. 啊这个没疑问的吧,一个变量只干一件事,比如一个按钮不能又是播放按钮又是关机键。关机和开机放一起没关系,因为他们都原创 2016-03-22 14:49:52 · 391 阅读 · 0 评论 -
里氏替换:爱恨纠葛的父子关系
里氏替换:爱恨纠葛的父子关系设计模式之禅里的这句话真的很形象。6大原则里,里氏替换可能是矛盾最大的一个。=========通俗了讲,依赖于面向对象的继承机制,父类能出现的地方,子类都可以无缝替换。这在整个架构设计中占据了举足轻重的地位。我相信大家对这一点都深有体会既然里氏替换这么矛盾,那么我们就从正反两个方面聊聊它好了。(里氏替换讲的除了继承类以外,还包括实现接口哦~接口你也可以理解为父类)正方父原创 2016-03-22 14:50:36 · 709 阅读 · 0 评论 -
依赖倒置像金鱼,好看但难养
依赖倒置像金鱼,好看但难养依赖导致是解耦的核心之一,但它就像金鱼一样,看着好看,缺很难伺候。================依赖倒置 - 面向接口编程。(是不是一下变得高大上了?)依赖倒置的核心:模块之间的依赖通过抽象(抽象类、接口)产生上一章我们聊了继承,这章聊实现。我理解的面向接口编程字面意思,是通过接口产生依赖关系。实现类不直接发生交互。那么接口是什么呢?接口是规则的集合接口设定了一系列的规则原创 2016-03-22 14:51:15 · 584 阅读 · 0 评论 -
接口隔离不止是要求,你应该要明白隔离的好处
接口隔离不止是要求,你应该要明白隔离的好处最早我没有理解这个原则,只是以为是一种实际要求。但是后来的实践中才终于发现了隔离的好处。==============接口隔离的两个概念:客户端不应该依赖它不需要的接口。类间的依赖关系应该建立在最小的接口上。其实这个概念我们在前几章就有接触过类似的。我是这样说的:你给我的,就是我都能用的,不要口头告诉我不要调用你这个方法。所以到这一章,你就应该能够隐约体原创 2016-03-22 14:51:51 · 3600 阅读 · 1 评论 -
设计模式实践报告 * 目录
设计模式实践报告 * 系列=========初学设计模式的最大困难在于短期内很难应用于实践,而一味的依照书本追求设计模式(滥用设计模式)常常得不偿失。当然,渡过漫长的“滥用设计模式”阶段之后一定会有不菲的收获。该系列是设计模式使用的经验类文章,脱离书本过于简单的例子,以更真实的接近实际需求的案例对设计模式实践进行讲述。- 了解了每一个设计模式的优点,也要了解每个设计模式的缺点!- 设计模式的最佳使用原创 2016-03-22 14:48:04 · 622 阅读 · 0 评论