设计模式
文章平均质量分 93
Loong.xu
青春的诀别是不是意味着年迈的将近;其实,青春,她一直都在继续.
展开
-
设计模式(十七)---责任链模式
https://blog.csdn.net/self_study/article/details/52012370翻译 2020-03-23 12:41:13 · 103 阅读 · 0 评论 -
设计模式(十六)---外观模式
这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式。通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节。当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块、ImageLoader 模块等。其实我们在...翻译 2020-03-22 22:14:06 · 210 阅读 · 0 评论 -
设计模式(十六)---桥接模式
这篇博客我们来介绍一下桥接模式(Bridge Pattern),它也是结构型设计模式之一。桥接,顾名思义,就是用来连接两个部分,使得两个部分可以互相通讯或者使用,桥接模式的作用就是为被分离了的抽象部分和实现部分搭桥。在现实生活中也有很多这样的例子,一个物品在搭配不同的配件时会产生不同的动作和结果,例如一辆赛车搭配的是硬胎或者是软胎就能够在干燥的马路上行驶,而如果要在下雨的路面行驶,就需要搭配雨...翻译 2020-03-22 21:34:44 · 203 阅读 · 0 评论 -
设计模式(十五)---组合模式
这篇我们来介绍一下组合模式(Composite Pattern),它也称为部分整体模式(Part-Whole Pattern),结构型模式之一。组合模式比较简单,它将一组相似的对象看作一个对象处理,并根据一个树状结构来组合对象,然后提供一个统一的方法去访问相应的对象,以此忽略掉对象与对象集合之间的差别。这个最典型的例子就是数据结构中的树了,如果一个节点有子节点,那么它就是枝干节点,如果没有子节点...翻译 2020-03-22 16:12:11 · 256 阅读 · 0 评论 -
设计模式(十四)---原型模式
这篇博客我们来介绍一下剩下的最后一个创建型模式:原型模式(Prototype Pattern)。该模式有一个样板实例,用户从这个样板对象中复制出一个内部属性一致的对象,这个过程在 C++ 中就是一个克隆。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可以使程序运行效率更高。 这个模式的重点在于,客户端...翻译 2020-03-22 15:33:30 · 215 阅读 · 0 评论 -
设计模式(十三)---对象池模式
这次要介绍一下对象池模式(Object Pool Pattern),这个模式为常见 23 种设计模式之外的设计模式,介绍的初衷主要是在平时的 android 开发中经常会看到,比如 ThreadPool 和 MessagePool 等。 在 java 中,所有对象的内存由虚拟机管理,所以在某些情况下,需要频繁创建一些生命周期很短使用完之后就可以立即销毁,但是数量很大的对象集合,那么此时...翻译 2020-03-22 14:39:06 · 704 阅读 · 0 评论 -
设计模式(十二)---享元模式
这篇我们来介绍一下享元模式(Flyweight Pattern),Flyweight 代表轻量级的意思,享元模式是对象池的一种实现。享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,缓存可共享的对象,来达到对象共享和避免创建过多对象的效果,这样一来就可以提升性能,避免内存移除和频繁 GC 等。 享元模式的一个经典使用案例是文本系统中图形显示所用的数据结构,一个文本系...翻译 2020-03-22 11:41:19 · 172 阅读 · 0 评论 -
设计模式(十一)---策略模式
这篇博客我们来介绍一下策略模式(Strategy Pattern,或者叫 Policy Pattern),也是行为型模式之一。通常在软件开发中,我们为了一个功能可能会设计多种算法和策略,然后根据实际使用情况动态选择对应的算法和策略,比如排序算法中的快速排序,冒泡排序等等,根据时间和空间的综合考虑进行运行时选择。 针对这种情况,一个常规的方法是将多种算法写在一个类中,每一个方法对应一个具体的...翻译 2020-03-22 10:57:55 · 163 阅读 · 0 评论 -
设计模式(6) 适配器模式
这篇来介绍一下适配器模式(Adapter Pattern),适配器模式在开发中使用的频率也是很高的,像 ListView 和 RecyclerView 的 Adapter 等都是使用的适配器模式。在我们的实际生活中也有很多类似于适配器的例子,比如香港的插座和大陆的插座就是两种格式的,为了能够成功适配,一般会在中间加上一个电源适配器,形如:这样就能够将原来不符合的现有系统和目标系统通过适配器...翻译 2020-03-22 10:19:36 · 246 阅读 · 0 评论 -
设计模式(十三)抽象工厂模式
前言此前讲解过简单工厂模式和工厂模式,这一篇我们来学习工厂系列的最后一个模式抽象工厂模式,建议在阅读此文前,请先阅读设计模式(四)简单工厂模式、设计模式(十)工厂方法模式这两篇文章。抽象工厂模式定义抽象工厂模式可以说是是工厂方法模式的升级版,当需要创建的产品有多个产品线(产品族)时使用抽象工厂模式是比较好的选择。那什么是多个产品线呢?拿我们在设计模式(四)简单工厂模式、设计模式(十)工...翻译 2020-03-22 10:19:26 · 116 阅读 · 0 评论 -
设计模式(十)工厂方法模式
前言在此前的设计模式(四)简单工厂模式中我们介绍了简单工厂模式,在这篇文章中我们来介绍下工厂方法模式,它同样是创建型设计模式,而且又有些类似,文章的末尾会介绍他们之间的不同。1.工厂方法模式简介工厂方法模式定义定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。工厂方法模式UML图Product:抽象产品类。 ConcretePr...翻译 2020-03-22 10:19:04 · 137 阅读 · 0 评论 -
设计模式(九)模版方法模式
1.模版方法模式简介模版方法模式介绍在软件开发中,有时会遇到类似的情况,某个方法的实现需要多个步骤,其中有些步骤是固定的,而有些步骤并不固定,存在可变性。为了提高代码的复用性和系统的灵活性,可以使用模板方法模式来应对这类情况。模版方法模式定义定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤模版方法模式结构图...翻译 2020-03-21 15:08:24 · 97 阅读 · 0 评论 -
设计模式(八)外观模式
1.外观模式简介外观模式介绍当我们开发Android的时候,无论是做SDK还是封装API,我们大多都会用到外观模式,它通过一个外观类使得整个系统的结构只有一个统一的高层接口,这样能降低用户的使用成本。外观模式定义为系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得子系统更加容易使用。外观模式结构图Facade:外观类,知道哪些子系统类负责处理请求...翻译 2020-03-21 14:55:07 · 128 阅读 · 0 评论 -
设计模式(七)装饰模式
1.装饰模式简介装饰模式介绍装饰模式是结构型设计模式之一,不必改变类文件和使用继承的情况下,动态地扩展一个对象的功能,是继承的替代方案之一。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。定义动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式结构图Component:抽象组件,给对象动态的添加职责。 ConcreteCompo...翻译 2020-03-21 14:40:10 · 109 阅读 · 0 评论 -
设计模式学习笔记总目录
java/android设计模式介绍设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。一个设计模式并不是能够用于代码中的,而是提供一个在不同情况下解决问题的模板示例。设计模式允许开发者用一个大家都熟知的编码方式进行交流,有利于软件的扩展性和可维护性。职责 设计模式当然也需要遵循面向对象设计的6大原则:单一职责原则单...翻译 2020-03-21 12:52:33 · 145 阅读 · 0 评论 -
设计模式(六)代理模式
1.代理模式简介代理模式介绍代理模式也叫委托模式,是结构型设计模式的一种。在现实生活中我们用到类似代理模式的场景有很多,比如代购、代理上网、打官司等。定义为其他对象提供一种代理以控制这个对象的访问。代理模式结构图Subject:抽象主题类,声明真实主题与代理的共同接口方法。 RealSubject:真实主题类,定义了代理所表示的真实对象,客户端通过代理类间接的调用真实...翻译 2020-03-21 11:48:41 · 143 阅读 · 0 评论 -
设计模式(五)观察者模式
1.观察者模式模式简介定义观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。观察者模式结构图在观察者模式中有如下角色:Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对...翻译 2020-03-21 11:38:17 · 102 阅读 · 0 评论 -
设计模式(四)简单工厂模式
1.简单工厂模式简介定义简单工厂模式属于创建型模式又叫做静态工厂方法模式,是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式结构图Factory:工厂类,简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。 IProduct:抽象产品类,简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共...翻译 2020-03-21 10:36:20 · 120 阅读 · 0 评论 -
设计模式(三)建造者模式
1.建造者模式简介定义建造者模式(builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。简介建造者模式(builder)是创建一个复杂对象的创建型模式,将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示分离开来。例如我们要DIY一个台式机电脑,我们找到DIY商家,我们可以要求这台电脑的cpu或者主板或者其他的部件都是什么牌子的什么...翻译 2020-03-21 10:27:48 · 316 阅读 · 0 评论 -
设计模式(二)单例模式的七种写法
面试的时候,问到许多年轻的Android开发他所会的设计模式是什么,基本上都会提到单例模式,但是对单例模式也是一知半解,在Android开发中我们经常会运用单例模式,所以我们还是要更了解单例模式才对。定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式结构图:单例模式有多种写法各有利弊,现在我们来看看各种模式写法。1. 饿汉模式public class S...翻译 2020-03-21 10:14:35 · 157 阅读 · 0 评论 -
设计模式(一)设计六大原则
1. 单一职责原则(SRP)定义:就一个类而言,应该仅有一个引起它变化的原因。从这句定义我们很难理解它的含义,通俗讲就是我们不要让一个类承担过多的职责。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到破坏。比如我经常看到一些Android开发在Activity中写Bean......翻译 2020-03-21 10:01:08 · 148 阅读 · 0 评论 -
Java 设计模式之单例模式
单例模式应该是大家最熟悉的设计模式,但是单例模式有好几种实现方式,下面就分析各种实现方式的优缺点。概念单例模式,即单例类只能有一个实例,并且对外提供一个全局访问入口。下面依次介绍几种实现方式,关键在于如何创建唯一的实例。饿汉式饿汉式,是指类装载时就已经创建了实例,也是最简单的实现方式。1234567public class Singleton { private static final S...原创 2018-06-06 18:14:24 · 176 阅读 · 0 评论 -
IOC模式
1.依赖依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖。如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它。下面看一个简单的示例: /// /// 用户播放媒体文件 /// public class OperationMain {转载 2016-09-06 14:55:51 · 594 阅读 · 0 评论