设计模式
蔚蓝的蓝_
这个作者很懒,什么都没留下…
展开
-
二十三种设计模式-六大原则
二十三种设计模式一、创建型:单例模式、工厂模式、抽象工厂模式、原型模式、建造者模式;二、结构型:代理模式,装饰器模式、适配器模式、外观模式、组合模式、享元模式、桥梁模式;三、行为型:策略模式、责任链模式、命令模式、中介者模式、模板方法模式、迭代器模式、访问者模式、观察者模式、解释器模式、备忘录模式、状态模式。三类设计模式的特点:...原创 2020-01-19 21:40:33 · 205 阅读 · 0 评论 -
python-单例模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:单例模式是所有设计模式中比较简单的一类,其定义如下:Ensure a class has only one instance, and provide a global point of access to it.(保证某一个类只有一个实例,而且在全局只有一个访问点)单例...原创 2020-01-19 21:41:31 · 153 阅读 · 0 评论 -
python-原型模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明原型模式关注的是大量相同对象或相似对象的创建问题,意图在于通过复制一个已经存在的实例来获得一个新的实例,以避免重复创建此类实例带来的开销。被复制的实例就是这个“原型”,这个原型是可定制的。实例:在Photoshop等平面设计的软件中,图层概念的提出,使得设计、...原创 2020-01-19 21:40:59 · 248 阅读 · 0 评论 -
python-建造者模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:假如要组装一台电脑,将主板,CPU,内存等部件按照某个稳定的步骤组合,基本过程是不变的,而组成电脑的各个部件却可以是不同性能的,不同价位,或者是不同版本的,当组成电脑的时只需要选择不同的组件就可以按照基本相同的过程造出不同配置的电脑。也就是说建造者模式的意图是将一个复杂对象的...原创 2020-01-19 21:40:26 · 503 阅读 · 0 评论 -
简单工厂模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns考虑动机:考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等),这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知...原创 2020-01-13 19:48:31 · 161 阅读 · 0 评论 -
python-工厂方法模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns简单工厂模式的不足:在简单工厂模式中,只提供了一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类。简单工厂模式最大的缺点是当有新产品要加入到系统中时,必须修改工厂类,加入必要的处理逻辑,这违背了“开闭原则”。在简单工厂...原创 2020-01-13 19:47:54 · 171 阅读 · 0 评论 -
python-外观模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:外观模式又叫做门面模式。在面向对象程序设计中,解耦是一种推崇的理念。但事实上由于某些系统中过于复杂,从而增加了客户端与子系统之间的耦合度。例如:在家观看多媒体影院时,更希望按下一个按钮就能实现影碟机,电视,音响的协同工作,而不是说每个机器都要操作一遍。这种情况下可以采用外观模...原创 2020-01-13 19:47:22 · 115 阅读 · 0 评论 -
python-桥接模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:有些类在功能设计上要求,自身包含两个或两个以上变化的因素,即该类在二维或者多维上变化。现有一杯咖啡,咖啡杯的大小和是否加奶为两个变化因素,使得这杯咖啡在这两个维度上发生变化,也就是可以产生四个类:小杯不加奶,小杯加奶,大杯不加奶,大杯加奶。这样的话如果说在给咖啡多几个变化因素...原创 2020-01-13 19:46:51 · 291 阅读 · 0 评论 -
python-适配器模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:为了解决接口不兼容的问题引进一种接口的兼容机制,就是适配器模式,其通过提供一种适配器类将第三方提供的接口转换为客户希望的接口。生活中的例子例如:手机充电器要将220v的电源转换为手机适合的电压才能充电。这个充电器就起到了适配的作用。适配器模式:将一个类的接口转换成客户希望...原创 2020-01-13 19:46:21 · 182 阅读 · 0 评论 -
python-装饰器模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:有时为了给某个对象而不是给整个类添加一个功能,使用继承机制是添加功能的一个有效途径,但是不够灵活,用户不能控制对组件加边框的方式和时机,并且会导致子类膨胀。一种较为灵活的方式就是将组件嵌入另一个对象中,这个嵌入的对象叫做装饰。装饰模式:动态地给一个对象增加一些额外的职责。...原创 2020-01-13 19:45:41 · 138 阅读 · 0 评论 -
python-代理模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:模式动机 通过引入一个新的对象(如小图片和远程代理对象)来实现对真实对象的操作或者将新的对象作为真实对象的一个替身,这种实现机制即为代理模式,通过引入代理对象来间接访问一个对象,这就是代理模式的模式动机。常见的有:分析 代购商品:顾客 ->代购网站 ->商品...原创 2020-01-13 19:45:08 · 153 阅读 · 0 评论 -
python-享元模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:如果一个软件系统在运行时所创建的相同或相似对象数量太多,将导致运行代价过高,带来系统资源浪费、性能下降等问题 如何避免系统中出现大量相同或相似的对象,同时又不影响客户端程序通过面向对象的方式对这些对象进行操作呢。例如在文字编辑软件中,把每个字符当成对象处理,并分配相应的系统空...原创 2020-01-13 19:44:31 · 180 阅读 · 0 评论 -
python-组合模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:组合模式主要用来处理一类具有“容器特征”的对象——它们即充当对象又可以作为容器包含其他多个对象。组合模式对“容器特征”的对象和单个对象一视同仁。例如在计算机处理算术表达式的时候,算术表达式包括操作数,操作符和另一个操作数。操作数可以是一个数字也可以是另一个表达式。这样7+8和...原创 2020-01-13 19:43:50 · 327 阅读 · 0 评论 -
python-策略模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:策略指的就是为了达到某一目的而采取的手段或者方法。为了实现软件设计咪表,对象可能会用到多种多样的算法。这些算法甚至会经常改变。如果将这些算法都硬编码到对象中,将会使得对象本身变得臃肿不堪,而且有时候支持不同的算法也是一个性能负担。策略模式很好的实现了在运行时根据需要透明的更改...原创 2020-01-13 19:43:15 · 173 阅读 · 0 评论 -
python-状态模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:在软件开发过程中,各种应用程序可能会根据不同的情况做出不同的处理。最直接的方案就是把所有的可能发生的情况都考虑到。然后使用条件语句对不同情况的作出判断并进行处理。但是假如状态比较复杂,就会出现多个判断语句,判断语句中又包含这各种操作,这显然是不受欢迎的。状态模式的出现就...原创 2020-01-10 13:23:36 · 235 阅读 · 0 评论 -
python-中介者模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:面向对象设计中鼓励将行为分不到各个对象中,这种分布可能会导致对象间有许多连接。最坏的情况下,每一个对象都知道其他所有对象,这就非常不符合设计模式原则了。因为单一指责原则要求我们应该尽量将对象细化,使其只负责单一的职责。并且当大量对象相互连接交织在一起的时候,对系统行为的改动将...原创 2020-01-10 13:23:04 · 179 阅读 · 0 评论 -
python-备忘录模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:一个成熟的软件应当允许用户取消不确定的操作或者从错误的状态中恢复过来。复制,粘体,撤回,和剪切是常见的应用。因此程序必须提供必要的检查点和取消机制。在适当的事迹程序需要检查对象的状态,如有必要将状态信息保存到某处,以使得对象有机会恢复到它们之前的状态。但是面向对象的封装性又使...原创 2020-01-10 13:22:29 · 251 阅读 · 0 评论 -
python-责任链模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:当你作为一名coder已经快三十却还还没有女朋友,家中父母已经着急万分,此时要求你回家相亲,你嘴上说不要,我还年轻,还要为事业打拼,但是摸着头顶上日渐稀少的毛发,身体也很诚实,早早的写好了假条。此时要找领导请假,但是又不知道找哪个靠谱的领导。简言之,提交请求的对象并不明...原创 2020-01-10 13:21:48 · 148 阅读 · 0 评论 -
python-访问者模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:访问者模式的基本想法是,软件系统中拥有一个由许多对象构成的、比较稳定的对象结构,这些对象的类都拥有一个 accept 方法用来接受访问者对象的访问。访问者是一个接口,它拥有一个 visit 方法,这个方法对访问到的对象结构中不同类型的元素做出不同的处理。在对象结构的一次...原创 2020-01-10 13:20:18 · 207 阅读 · 0 评论 -
python-命令模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns说明:命令在发送方被激活,而在接收方被响应。一个对象既可以作为命令的发送方,也可以作为命令的接收方,或者都可以。命令的典型应用就是图形用户界面开发。每一个窗体都包含菜单,工具栏,按钮等控件,将用户的单机动作也叫命令作为外部事件,然后系统会根据绑定的事件处理程序执行相应的动作即命令获...原创 2020-01-10 13:19:24 · 142 阅读 · 0 评论 -
二十三种设计模式-六大原则
二十三种设计模式一、创建型:单例模式、工厂模式、抽象工厂模式、原型模式、建造者模式; 二、结构型:代理模式,装饰器模式、适配器模式、外观模式、组合模式、享元模式、桥梁模式; 三、行为型:策略模式、责任链模式、命令模式、中介者模式、模板方法模式、迭代器模式、访问者模式、观察者模式、解释器模式、备忘录模式、状态模式。 三类设...原创 2020-01-05 19:50:42 · 232 阅读 · 0 评论