设计模式
rain9155
每天进步一点点
展开
-
你知道有多少种方式实现单例模式?
前言单例模式是应用最广的模式之一,也是最简单的模式,但越是简单的东西,就越容易忽略它的细节,在应用这个模式时,同一个进程内,单例对象的类必须保证只有一个实例存在,比如在一个应用中,应该只有一个ImagerLoader实例,因为这个ImagerLoader中含有线程池、缓存系统、网路请求等,创建一次需要消耗很多资源,因此,没有理由让它构造多个实例,这种不能自由的构造对象,确保某一个类有且只有一个对...原创 2019-11-29 21:09:09 · 2159 阅读 · 0 评论 -
行为型模式之备忘录模式
备忘录模式介绍见名知义,备忘录模式是用来保存对象的当前状态,并且在之后可以再次恢复到此状态,备忘录模式实现的方式需要保证对象的状态不能被对象从外部访问,目的是为了更好的保存这些对象的完整性以及实现内部不向外暴露。备忘录模式的定义在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。备忘录模式的使用场景(1)需要保存一个对象在...原创 2019-10-23 22:44:34 · 172 阅读 · 0 评论 -
创建型设计模式之抽象工厂模式
介绍在前面已经讲解过工厂方法模式,这俩者有什么区别呢?前面所说的工厂方法模式只会生产一种具体的产品,而抽象工厂模式生产出来的产品是不确定的。例如不同操作系统中控件的实现不一样,展示效果也不一样,对于操作系统如Android,iOS,WindowPhone本身构成一个产品类,而其控件如Button,TextView也构成产品类,两种产品类两种变化,各有各的特性。定义为创建一组相关或者相互...原创 2019-04-20 14:52:24 · 269 阅读 · 0 评论 -
创建型设计模式之原型模式
原型模式的介绍原型二字代表该模式应该有一个样板实例,用户从这个样板中复制出一个内部属性一致的对象,这个过程也就是我们俗称的“克隆”。被复制的实例就是我们所称的“原型”。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可以使程序运行更高效。原型模式定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象原型模式使用场景(1)类初始化需要消...原创 2019-04-20 14:49:25 · 175 阅读 · 0 评论 -
结构型设计模式之装饰者模式
介绍装饰者模式又称为包装模式,平时开发中,我们想要扩展一个现有对象,一般的做法是继承这个对象,然后在子类中添加功能,而装饰者模式就是继承的一种替代方案,也是一种动态扩展对象功能的方法。定义动态的给一个对象添加一些额外的职责。使用场景需要动态且透明地扩展类的功能时,类图角色介绍:Component: 抽象组件,可以是接口或抽象类,其实是被装饰的原始对象。ConcreteComp...原创 2019-04-12 18:31:37 · 178 阅读 · 0 评论 -
适配器模式
适配器模式的介绍适配器模式在开发中使用频率很高,那么何为适配器呢?适配器就是将两个不兼容的类融合到一起,或者说将两种不同的东西通过转换使得它们可以相互协作起来。比如生活中的手机充电器,家用电压220V,手机充电只需用到5v,那么手机充电器就是把220v装换为手机合适使用的电压来进行充电,手机充电器就是一个电源适配器。适配器模式的定义适配器模式把一个类的接口变成客户端所期待的另一种接口,从而使...原创 2019-02-24 16:28:43 · 195 阅读 · 0 评论 -
结构型设计模式之代理模式
代理模式的介绍代理模式,也称委托模式,何为代理呢? 在日常生活中就比如叫朋友替你拿个快递,叫朋友替你做一下作业,叫朋友替你买点东西等等,这个朋友就是你的代理,你把事情委托你的朋友做了,是不是很通熟易懂。同样在代码的世界中也存在代理,而且在你以后阅读到更多的设计模式时,你会发现很多的设计模式中也有代理模式的影子。代理模式的定义为其他对象提供一种代理以控制这个对象的访问。代理模式的使用场景当...原创 2019-02-23 18:40:01 · 303 阅读 · 0 评论 -
创建型设计模式之Builder模式
介绍Builder模式是一步步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更加精准的控制对象的构造过程,为了在构建过程中,对外部隐藏实现细节,就可以使用Builder模式将部件和组装过程分离,使得构建过程和部件可以自由扩展,两者之间的耦合度也降到最低。定义将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。使用场景(1)相同的...原创 2018-10-04 13:19:51 · 319 阅读 · 0 评论 -
创建型设计模式之工厂方法模式
介绍工厂方法模式是一种结构简单的模式,并且在我们的应用中很广泛,如Android中Activity的各个生命周期的回调,以onCreate方法为例,它就可以看做是一个工厂方法,我们在其中构造我们的View并返回给framework处理。定义定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法模式的在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂...原创 2018-10-05 11:30:59 · 286 阅读 · 0 评论 -
策略模式
介绍在开发中也经常遇到这种情况,实现某一个功能往往有许多算法或者策略,我们在实际开发中选择不同的算法或策略来完成该功能。一般的情况是我们会把所有的算法或策略写入一个类中,通过if...else...或case语句来根据实际情况来选择具体算法或策略,但是这种方法会使这个类臃肿,维护难,当增加一种算法或策略时又要修改源代码,违反了面向对象的单一原则和开闭原则。如果将这些算法或者策略抽象出来,提供一...原创 2018-10-06 11:55:05 · 192 阅读 · 0 评论 -
状态模式
状态模式的介绍状态模式中的行为是由状态来决定的,不同的状态有不同的行为。状态模式和的策略模式结构几乎完全一样,但是它们的目的和本质却完全不一样,状态模式的行为是不可替换的,平行的,而的策略是彼此独立的,可替换的。一句话表示,状态模式意图是让一个对象在其内部状态改变时,其行为也发生改变。状态模式的定义当一个对象的内在状态改变时,允许改变其行为,这个对象像是改变了其类。状态模式的使用场...原创 2018-10-07 23:39:54 · 193 阅读 · 0 评论 -
行为型设计模式之责任链模式
介绍责任链模式是一种链式结构,就是由一个个节点首尾相接串起来的结构,具有很好的灵活性,将每一个节点看作是一个对象,每一个对象拥有不同的处理逻辑,将一个请求从链式的首端发出,沿着链的路径依此传递每一个节点对象,直到有对象处理这个请求为止,我们将这样一种模式称为责任链模式。定义使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该...原创 2018-10-08 14:59:40 · 306 阅读 · 0 评论 -
观察者模式
介绍观察者模式是一个使用率非常高的模式,这个模式的一个重要作用就是将被观察者和观察者解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。定义观察者模式定义对象间一种一对多的依赖关系,使得当每一个对象改变状态时,则所有依赖于它的对象都会得到通知并被自动更新。使用场景(1)关联行为场景,需要注意的是,关联行为是可拆分的,而不是组合关系(2)事件多级出发场景(3)跨系统的消息...原创 2018-10-11 19:48:12 · 1634 阅读 · 0 评论