
设计模式
WuRuiF
一件简单的事情,重复的去做,反复的思考,不断的改进,会发生奇迹。
展开
-
设计模式-命令模式
命令模式:将一个请求或者命令封装成一个对象,从而让用户将客户端请求参数化。对请求排队,或者记录日志,以及支持撤销动作。每次看任何定义都是云里雾里╮(╯▽╰)╭。其实我觉得这个模式就是将要进行的请求封装成对象,为什么要封装成对象?因为这个请求可能不是一个动作能完成的,再者就是这个请求需要依赖与另外的功能类去实现,如果代码直接耦合的持有另一功能类的引用去操作实现功能,会使的代码耦合度比较高,而且不原创 2017-03-08 18:28:11 · 240 阅读 · 0 评论 -
设计模式-原型模式
原型模式:通过拷贝原型实例,来创建一个新的此种类型的对象。简单点说就是,通过一个对象实例,创建一个“一摸一样” 的对象实例,但是与原对象是两个不同的对象实例。那一摸一样作何解释?因为拷贝又分为浅拷贝和深拷贝,而一摸一样只是所表现出的形式,而实质却有所不同。浅拷贝:对于非引用类型属性拷贝一副,对于引用类型属性指向原对象的地址。深拷贝: 引用类型属性也拷贝一份。我们原创 2017-03-24 17:52:41 · 413 阅读 · 0 评论 -
设计模式-工厂模式
工程模式是一个大家族,里面根据时间的推移和不断的优化,以及应用的场景,又分为不同的类别:一:静态工厂模式二:简单工厂模式三:工厂方法模式四:抽象工厂模式一一举例。静态工厂模式: 我们平常常用的静态工具类其实就是使用了静态工厂模式,类+静态方法,这种实现,例子:public class StaticFactoryDemo { public static boo原创 2017-03-07 17:12:45 · 421 阅读 · 0 评论 -
设计模式-状态模式
状态模式:当一个对象 的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。简单点说:一个对象的功能根据它内部状态而表现出不同的行为。举一个反例,用遥控器来举例,遥控器在电视开的情况下和电视没开的情况下,同样的按键会表现出不同的结果。普通的编程方式:public class TeleController { /** * 开机状态 */ public stati原创 2017-03-10 17:40:53 · 337 阅读 · 0 评论 -
设计模式-模板方法模式
模板方法:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使的子类可以不可以一个算法的结构即可重定该算法的某些特定步骤。简单点说:有一组流程要执行,流程中只有一个步骤是未知的,它前后的其余步骤都是固定的,我们就将这一步骤延迟到具体的子类去实现,以达到通用代码的抽象封装。假设有一个考试的父类:/** * 考试 * @author PC * */public abstrac原创 2017-03-10 16:41:11 · 236 阅读 · 0 评论 -
设计模式-外观模式
外观模式:提供一个统一的接口,用来访问子系统内部的一系列接口。其实简单点说:有一个复杂的系统,它有许多功能依赖与其他的子系统,让这个复杂的系统对外提供统一接口,对子系统的依赖与逻辑操作封装在内部去完成。就是简单的封装而已。举一个手机的例子,例子来源-Android源码设计模式实践与实战。定义系统顶层接口:/** * 手机 * @author PC * */public i原创 2017-03-10 15:56:42 · 300 阅读 · 0 评论 -
设计模式-单例模式
单例模式定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式的使用场景:一:避免产生多个对象而过度消耗资源,例如数据库连接池。二:这个对象有且仅应该只有一个对象,例如Android的Application实例。代码实现:第一种:饿汉式public class SingletonDemo { private static final原创 2017-03-07 12:18:25 · 285 阅读 · 0 评论 -
设计模式-适配器模式
适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。示例:定义目标接口(真正所期待的功能):/** * 电脑充电接口 * @author PC * */public interface ComputerPower { /** * 需要5V * @return */ int getPower(原创 2017-03-10 12:34:19 · 337 阅读 · 0 评论 -
设计模式-策略模式(结合JDK源码)
策略模式:定义了一系列算法族,并将每一个算法封装起来,而且使他们可以互相替换。策略模式让算法独立于使用它的客户而独立变化。问题:假设我们有一个类,提供为List排序功能,分别有选择使用快速排序,冒泡排序。我们常使用的最普通的实现方式:/** * 排序工具类 * @author PC * */public class SortUtil { /** * 快速排序 */原创 2017-03-10 11:06:56 · 751 阅读 · 0 评论 -
设计模式-观察者模式,以及如何使用观察者来为app实现即时通讯功能
观察者模式:定义对象间一种一对多的依赖关系。使的每当一个对象状态改变,则所有依赖它的对象都会得到通知。使用场景:微信公众号,即时通讯中的消息收发等等。现在用一个做即时通讯的用到最主要的一部分来举例,对于消息的接收。定义被观察者接口:/** * 消息被观察者 * @author PC * */public interface MessageReceiver { /**原创 2017-03-09 13:01:47 · 395 阅读 · 0 评论 -
设计模式-装饰者模式
装饰者模式定义:动态的为一个对象增加额外的功能。what?啥意思。。? 其实还是遵循那个原则,对修改关闭,对扩展开放。如果要给一个类增加额外的功能,不要去修改他的代码,而是通过其他类持有它的引用,在功能前后增加所要增加的功能即可。看程序设计,java的流体系就是用装饰者模式设计的,我们自己也来设计一套流。顶层接口:/** * 输入流顶层接口 * @author Ade-ru原创 2017-03-09 10:43:32 · 306 阅读 · 0 评论 -
设计模式-访问者模式
定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。落实到代码就是: 有一个类族A(继承与同一抽象类或者父类),它们各自的实现类之间又有许多不同的操作,或者也得考虑增加新的操作,有一个族群B将要访问A中许多对象,并且对不同类型的对象进行的操作不同,那么我们为了避免代码耦合以及变动引起的代码污染,就通过定义一个访问接口,来访问族群A,原创 2017-03-27 11:41:33 · 454 阅读 · 0 评论