设计模式
文章平均质量分 82
huang_zd
这个作者很懒,什么都没留下…
展开
-
设计模式-介绍
设计模式说到设计模式,想必入行一段时间的猿们都有所了解。不管是百度还是google,搜索设计模式,都会有很多搜索结果。那么我写的这些又会和他们的有什么不同的呢?在打算写这些文章时,我也在思考这个问题。其实,我的这些文章和其他的目的是一样的的,都是让读者了解、熟悉、甚至是熟练掌握这些设计模式。所以,我只能在叙述这些设计模式的同时,加上自己的理解,再融合生活中或者实际开发中遇到的问题进行剖析,让读者更容原创 2017-07-31 20:43:07 · 1383 阅读 · 0 评论 -
设计模式-桥接模式
介绍桥接模式属于结构型模式,用于把抽象化与实现化解耦,使得二者可以独立变化,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。桥接模式适用于一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,以及不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,或者一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。 就例如各个小吃店的点原创 2017-09-10 21:42:54 · 257 阅读 · 0 评论 -
设计模式-代理模式
代理模式是结构性模式,它通过引入一个新的对象(如小图片和远程代理对象)来实现对真实对象的操作或者将新的对象作为真实对象的一个替身。我们现实生活中也有许多代理模式的影子。例如朋友出国旅游,我们可以托朋友帮忙买些东西。或者,我们点外卖,配送员替我们去取餐等等。原创 2017-09-10 21:42:19 · 286 阅读 · 0 评论 -
设计模式-观察者模式
在我们日常生活中,有些人会有订阅报纸的经历,当我们订阅时,都能定时的收到报纸,当我么取消订阅时,就不会再收到报纸。 当然,互联网普及之后,报纸逐渐减少。但是类似的也有许多,例如微信的公众号,当我们订阅了公众号时,公众号有新文章发布时就会推送到我们的微信上。用户3关注公众号 公众号把用户3添加到关注用户列表中,有新文章时推送给关注用户列表中 用户2取消关注,公众号把用户2从关注用户列表中原创 2017-09-09 13:15:17 · 614 阅读 · 0 评论 -
设计模式-中介者模式
在我们的日常生活中经常需要购买各种各样的东西,房子、车子、生活用品等等。那么我们并不会对各个产品都了解,所以销售人员应运而生,他们了解产品,然后他们根据你的需求在向你们推荐符合你们要求的产品。这些销售人员就相当于中介,处于客户和产品之间,为你们搭桥牵线。这就是这篇需要讲述的一个设计模式-中介者模式。介绍从程序方面来讲,中介者模式就是各个对象封装,使他们不需要相互直接引用,而是通过中介者来通信。对于一原创 2017-09-10 21:09:56 · 1093 阅读 · 0 评论 -
设计模式-策略模式
介绍在项目开发中,经常会碰到需要根据不同的条件采用不同的算法,但是这些不同的算法又有些类似。例如商城下单中的打折功能(打八折、五折、一折),满减功能等等。 地图中根据采用不同的出行方式计算时间、金额等等,如下图,不同的出行方式使用不同的算法计算需要花费的时间和最短的行驶距离。 结构图那这些不同的行为,我们可以把它们封装成不同的算法,根据用户选择的不同采用不同的算法,这种可以采用策略模式来实现他们原创 2017-09-02 18:08:49 · 1309 阅读 · 0 评论 -
设计模式-原型模式
介绍原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。优点性能提高。 简化对象的创建注意事项使用原型模式复制对象不会调用类的构造方法。有深拷贝与浅拷原创 2017-09-03 16:05:32 · 501 阅读 · 0 评论 -
设计模式-组合模式
介绍这篇主要讲述设计模式中的组合模式。组合模式又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 树形结构在软件中随处可见,例如操作系统中的目录结构、应用软件中的菜单、办公系统中的公司组织结构等等。 接下来看看组合模式的结构图结构图在组合模式结构图中包含如下几个角色:原创 2017-09-23 16:41:12 · 306 阅读 · 0 评论 -
设计模式-迭代器模式
介绍迭代器模式在我们日常编程中使用非常频繁,像list、map、数组等都会用到迭代器模式。迭代器模式属于行为型模式,它用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。结构图在迭代器模式结构图中包含如下几个角色:Iterator(抽象迭代器):它定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法,例如:用于获取第一个元素的first()方法,用于访问下一个元素的next()方法,用于原创 2017-09-23 16:35:36 · 309 阅读 · 0 评论 -
设计模式-命令模式
介绍说到命令模式,我们可以联想到上级下达命令,下级接收命令去执行,遥控器发送命令,相应的机器做出反应。就比如电灯泡的开关,排气扇的开关等等。这些开关就是发送命令的对象,而电灯泡和排气扇就是接受命令的对象,如下图。 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令原创 2017-09-17 14:01:29 · 372 阅读 · 0 评论 -
设计模式-适配器模式
这篇文章讲的是适配器模式,适配器模式其实在我们日常生活中就有许许多多的例子 例如插座转接头 车载充电器 还有许许多多其他的,我就不一一介绍了。其实设计模式中和真实世界中的适配器的作用都是一样的,都是讲一个结构转换成另一个接口,以达到我们希望的结果。介绍适配器模式(Adapter Pattern## 标题 ##)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了原创 2017-09-17 14:01:10 · 300 阅读 · 0 评论 -
设计模式-模板方法模式
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I原创 2017-08-27 21:05:28 · 595 阅读 · 0 评论 -
设计模式-外观模式
介绍现实生活中有许多外观模式的例子,像餐馆的服务员、一些企业的客户人员、公司的前台等等。 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。为什么要使用外观模式?让外部不直原创 2017-08-12 22:11:29 · 582 阅读 · 0 评论 -
设计模式-单例模式
介绍单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。实际运用例如一个嵌入到微信的项目,里面有这微信登入、微信分享文章、微信获取位置等功能。那么用到微信登入这个功能,首先就要获取access_token。下面是关于获取access_token的说明。 access_token是公众号的全局唯原创 2017-08-05 20:29:03 · 1071 阅读 · 0 评论 -
设计模式-简单工厂模式
工厂模式一共分为三种,简单工厂、工厂模式和抽象工厂。这三种工厂模式都属于创建型模式。这篇博文主要讲解工厂模式的第一种-简单工厂模式。介绍简单工厂模式(Simple Factory Pattern)又称为静态工厂方法(Static Factory Method)模式,它可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 说的简单点原创 2017-08-20 17:19:44 · 821 阅读 · 0 评论 -
设计模式-工厂方法模式
这一片来介绍工厂模式中的第二种工厂方法模式。介绍工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂原创 2017-08-20 17:46:41 · 652 阅读 · 0 评论 -
设计模式-抽象工厂模式
这一篇博文来介绍工厂模式中的第三种抽象工厂模式。介绍抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。 抽象工厂模式不同于前面两个模式,这篇也用支付的案例来讲解。现实中发生的支付情况可能是这样: 支付都有个商户号,然而现在有两个商户号,需要在不同时间段切换使用,例原创 2017-08-20 18:44:04 · 762 阅读 · 0 评论 -
设计模式-享元模式
介绍享元模式简单的来说就是把一些重复的抽取出来提供给其他类使用。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。 享元模式(Flyweight Pattern)运用共享技术有效地支持大量细粒度对象的复用。系统只使原创 2017-09-03 19:23:31 · 513 阅读 · 0 评论 -
设计模式-状态模式
介绍状态模式和策略模式是一对双胞胎,他们都属于行为设计模式。状态模式和策略模式都是为具有多种可能情形设计的模式,把不同的处理情形抽象为一个相同的接口,符合对扩展开放,对修改封闭的原则。策略模式封装了一组相关算法,它允许Client在运行时使用可互换的行为;状态模式帮助一个类在不同的状态显示不同的行为。状态模式封装了对象的状态,而策略模式封装算法或策略。因为状态是跟对象密切相关的,它不能被重用;而通过原创 2017-09-04 19:08:19 · 468 阅读 · 0 评论 -
设计模式-装饰模式
介绍装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。 继承机制同样可以给现有类增加功能,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机。 而装饰器模式是将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为。结构图时序图案例我这边就原创 2017-09-05 16:28:26 · 755 阅读 · 0 评论 -
设计模式-备忘录模式
介绍备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。当我们玩单机游戏时就有个存档的功能,这样就是备忘录模式的应用。 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,当前很多软件都提供了撤销(Undo)操作,其中就使用了备忘录原创 2017-09-23 16:37:11 · 328 阅读 · 0 评论