设计模式
万子开发
追求技术,追求进步
展开
-
设计模式之观察者模式
概述在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有,当我们开车到交叉路口时,遇到红灯会停,遇到绿灯会行。这样的例子还有很多,例如,股票价格与股民、微信公众号与微信用户、气象局的天气预报与听众、小偷与警察等。在软件世界也是这样,例如,Excel 中的数据与折线图、饼状图、柱状图之间的关系;MVC 模式中的模型与视图的关系;事件模型中的事件源与事件处理者。所有这些,如果用观察者原创 2020-11-26 14:43:46 · 177 阅读 · 0 评论 -
设计模式之策略模式
概述在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如数据排序策略有冒泡排序、选择排序、插入排序、二叉树排序等。如果使用多重条件转移语句实现(即硬编码),不但使条件语句变得很复杂,而且增加、删除或更换算法要修改原代码,不易维护,违背开闭原则。如果原创 2020-11-26 11:41:38 · 108 阅读 · 0 评论 -
设计模式之享元模式
概述:在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提取出来共享,则能节省大量的系统资源,这就是享元模式的产生背景。(转自:http://c.biancheng.net/view/1371.html)定义使用共享对象有效地支持大量细粒度的对象原创 2020-11-25 14:17:23 · 142 阅读 · 0 评论 -
设计模式之外观模式
概述在现实生活中,常常存在办事较复杂的例子,如办房产证或注册一家公司,有时要同多个部门联系,这时要是有一个综合部门能解决一切手续问题就好了。软件设计也是这样,当一个系统的功能越来越强,子系统会越来越多,客户对系统的访问也变得越来越复杂。这时如果系统内部发生改变,客户端也要跟着改变,这违背了“开闭原则”,也违背了“迪米特法则”,所以有必要为多个子系统提供一个统一的接口,从而降低系统的耦合度,这就是外观模式的目标。定义要求一个子系统的外部与内部的通信必须通过一个统一的对象进行。此模式提供一个高层的原创 2020-11-25 10:18:11 · 107 阅读 · 0 评论 -
设计模式之装饰模式
概述在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修、相片加相框等,都是装饰器模式。在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。所有这些都可以釆用装饰模式来实现。定义:动态地给一个对象添加一些额外的职责,就添加功能来说,装饰模式比生成子类更为灵活。举个栗子杨过本身就会全真剑法,有两位武学前辈洪七公和欧阳锋分别向杨过传授过打狗棒法和蛤蟆功,这样杨过除了会全真剑法,还会打狗棒法和蛤蟆功。洪原创 2020-11-24 15:10:05 · 84 阅读 · 0 评论 -
设计模式之代理模式
概述在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保姆、找工作等都可以通过找中介完成。在软件设计中,使用代理模式的例子也很多,例如,要访问的远程对象比较大(如视频或大图像等),其下载要花很多时间。还有因为安全原因需要屏蔽客户端直接访问真实对象,如某单位的内部数据库等。定义:为其他对象提供一种代理以控制对这个对象的访问举个栗子原创 2020-11-24 14:08:32 · 164 阅读 · 0 评论 -
设计模式之建造者模式
概述建造者模式也被称为生产器模式,它是创建一个复杂对象的创建型模式,其将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示分离开来。举个栗子我们需要购买一台计算机,首先要求整改计算机的CPU,主板,或者其他部件都是什么牌子的,什么样的配置,根据自己的需求来变化。但是这些部件组装成计算的过程是一样的,我们无需知道这些部件是怎么组装的,我们只需要提供相关部件的牌子和配置就可以了。对于这种就可以采用建造者模式,将部件和组装过程分离。使得构建过程和部件都可以自由扩展,两者之间的耦合也降到最低。原创 2020-11-24 11:26:40 · 110 阅读 · 0 评论 -
设计模式之工厂模式
概述工厂,就是生产产品的地方。在Java设计模式中使用工厂的概念,那就是生成对象的地方了。本来直接就能创建的对象为何要增加一个工厂类呢?这就需要了解工厂方法要解决的是什么问题了,如果只有一个类,我们直接new一个对象完事,这是最简单的;但是如果有多个类呢,而且这些类还需要针对不同的情况来创建不同的对象,这时候就需要工厂了,我们可以在工厂中根据条件来创建具体的对象。这样一来就将调用方和具体的目标类进行了解耦,调用方根本就不知道需要创建那个对象,它只是提出了条件,然后工厂就可以根据给定的条件来决定创建哪原创 2020-11-24 10:10:42 · 124 阅读 · 0 评论 -
设计模式之单例模式
为什么需要设计模式?帮助我们应对不断的变化,新的变化对已有代码已有架构的影响尽可能的小。针对变化,不需要重复的修改已有代码去适应变化。每次只需要对增量编译、测试、部署。----------管理变化,提高复用(转自https://blog.csdn.net/sinat_22991367/article/details/86756484)定义:保证一个类仅有一个实例。并提供一个访问它的全局访问点。单例模式有多种写法并且其各有利弊饿汉式模式public class Singleton{原创 2020-11-23 15:41:34 · 107 阅读 · 0 评论