![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 74
justforhing
这个作者很懒,什么都没留下…
展开
-
对象型行为模式之迭代器模式 重要等级5难度等级2
适用:访问一个聚合对象得内容而无须暴露它得内部表示。将聚合对象的访问与内部数据的存储分离,使得访问聚合对象时无须了解其内部的实现细节。需要为聚合对象提供多种遍历方式。为遍历不同聚合结构提供统一的接口。如:遥控器和电视 迭代器模式是一种使用频率非常高的设计模式,迭代器用于对一个聚合对象进行遍历。怎样遍历一个聚合对象,又不需要了解聚合对象的内部结构,海能提供不同的遍历方式,这就是迭代器模式所要解...原创 2018-03-07 20:30:02 · 141 阅读 · 0 评论 -
对象结构型模式之享元模式 重要等级1难度等级4
适用条件:(1)系统中有大量相同或者相似的对象,由于这类对象的大量使用,造成内存的大量耗费。(2)对象的大部分状态都可以外部化,可以将这些外部状态传入对象中。(3)使用享元模式需要维护一个存储单元对象的享元池,而这些需要耗费资源,因此,应当在多次重复使用享元对象时才值得使用享元模式。实际应用:比如在一个文档中多次出现相同的图片,只需要创建同一个图片对象,在不同地方引用即可。JDK中...翻译 2018-12-18 09:52:38 · 125 阅读 · 0 评论 -
对象行为型模式之命令模式 重要等级4难度等级4
适用条件:系统需要请求调用者和接受者解耦,是的调用者和接收者不直接交互。请求调用者无须知道接收者的存在,也无须知道接收者是谁,接收者也无须关心何时被调用。系统需要在不同的时间制定请求、将请求排队和执行请求。一个命令对象和请求的初始调用者可以游不同的生命周期,换言之,最初的请求发出者可能已经不存在了,而命令对象本身仍然是活动的,可以通过该命令对象去调用请求接收者,而无须关心请求调用者的存在性。系统需...原创 2018-04-06 19:00:05 · 127 阅读 · 0 评论 -
对象结构型模式之外观模式 重要等级5难度等级2
适用情况:当要为一个复杂子系统提供一个简单的接口时可以使用外观模式。该接口可以满足大多数用户的需求,而且用户也可以越过外观直接访问子系统。客户程序与多个子系统之间存在很大的依赖性。引入外观类将子系统与客户以及其他子系统解耦,可以提高子系统的独立性和可移植性。在层次化结构中,可以使用外观模式定义系统中每一层的入口,层与层之间不直接产生联系,而通过外观类建立联系,降低层之间的耦合度。实际运用:几乎所有...原创 2018-04-03 10:57:54 · 188 阅读 · 0 评论 -
对象创建型模式之原型模式
应用场景:Ctrl+C Ctrl+V,Struts中保证线程的安全性,Action 对象的创建使用了原型模式,访问一个已经存在Action对象时将通过克隆的方式创建出一个新的对象,从而保证其中定义的变量无须进行加锁实现同步,每个Action中都有自己的成员变量,彼岸Struts1因使用单利模式而导致的并发和同步问题。Spring框架中使用原型模式来创建bean实例 原型模式结构较为简...原创 2018-03-06 10:54:10 · 231 阅读 · 0 评论 -
对象结构型模式之代理模式 重要等级4难度等级3
适用环境:远程代理:为一个位于不同的地址空间的对象提供一个本地的代理对象,这个不同的地址空间可以是在同一台主机中,也可以是在另一台主机中。远程代理又叫做大使(Ambasssador)。RMI(Remote Method Invocation 远程方法调用)、Web Service的实现原理。虚拟代理:如果需要创建一个资源消耗较大的对象,先创建一个消耗相对较小的对象来表示,真实对象只在需要时...原创 2018-03-13 07:58:31 · 237 阅读 · 0 评论 -
对象结构型模式之桥接模式 重要等级3难度等级3
适用环境:如果一个系统需要在构建的抽象化校色和具体化校色之间增加更多的灵活性,避免在两层次之间简历静态的继承关系,通过桥接模式可以使它们在抽象层建立一个关联关系。抽象化校色和实现化校色可以以继承的方式独立拓展而互不影响,在程序运行时可以动态将一个抽象化子类的对象和一个实现化子类的对象进行组合,即系统需要对抽象化的角色和具体化的角色进行动态耦合。一个类存在两个或多个独立变化的维度,且这两个或多个维度...原创 2018-03-19 09:32:52 · 186 阅读 · 0 评论 -
面向对象设计原则
1.单一职责原则:类的职责要单一,不能将太多的职责放在一个类中。2.开闭原则:软件实体对拓展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上去拓展其功能。3.里氏代换原则:在系统中,一个可以接受基类对象的地方必然可以接受一个子类对象。4.依赖倒转原则:要针对抽象层编程,而不要针对具体类编程。5.接口隔离原则:使用多个专门的接口代替一个统一的接口。6.合成复用原则:在系统中应该尽可能多使用...翻译 2018-03-05 10:09:41 · 110 阅读 · 0 评论 -
对象结构型设计模式之装饰模式· 重要等级3 难度等级3
适用情况:在不影响其他对象的情况下,以动态、透明的方式给单个对象增加职责。需要动态地给对象增加功能,这些功能也可以动态地被撤销。实际应用:装饰模式经常会用在数据加密,给图形界面增加边框,滚动等新特性等领域中。 之所以第二个设计模式就复习这个,在于学习设计模式时,由于时间有限,同时促进教学相长,老师要求我们同学组成小组,每小组派一个人来讲一个设计模式,于是我选择了装饰模式来讲。 装饰模式...原创 2018-03-05 08:47:57 · 155 阅读 · 0 评论 -
对象创建型模式之抽象工厂模式 重要等级5 难度等级4
适用环境:一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有类型的工厂模式都是重要的。用户无须关心对象的创建过程,将对象的创建和使用解耦。系统有多于一个产品族。可以通过配置文件等方式来使得用户可以动态改变产品族,也可以很方便地增加新的产品族。属于同一个产品族的产品将一起使用,这一约束必须在系统的设计中体现出来。应用:很多系统软件中需要更换界面主题,要求界面的按钮/文本框/背...原创 2018-03-12 08:19:44 · 137 阅读 · 0 评论 -
对象创建型模式之工厂方法模式 重要等级5 难度等级2
适用条件:一个类不知道它所需要的对象的类:在工厂方法模式中,客户端不需要知道具体产品类的类名,只需要知道所对应的工厂即可,具体的产品对象由具体工厂创建;客户端需要知道创建具体产品的工厂类。 一个类通过其子类来指定创建哪个对象:在工厂方法模式中,对于抽象工厂类只需要提供一个创建产品的接口,而由其子类来确定具体需要创建的对象,利用面向对象的多态性和里氏代换原则,在程序运行时,子类对象将覆盖父类对象,从...原创 2018-03-11 18:16:31 · 98 阅读 · 0 评论 -
对象行为型模式之观察者模式 重要等级5难度等级3
适用环境:一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这些方面封装在独立的对象中使它们可以各自独立的改变和复用。一个对象的改变将导致其他一个或多个对象也发生改变,而不知道具体有多少对象将发生改变,可以降低对象之间的耦合度。一个对象必须通知其他对象,而不知道这些对象是谁。需要在系统中创建一个触发链,A对象的行为将影响B对象,B对象的行为将影响C对象......可以使用观察者模式创建一种链...原创 2018-03-17 16:11:42 · 145 阅读 · 0 评论 -
行为型设计模式之访问者模式 重要等级1 难度等级4
应用场景:教师或学生奖励审批系统、一个对象包含很多类型的对象,希望对这些对象实施一些依赖其具体类型的操作等。访问者模式使得用户可以在不修改现有系统的情况下拓展系统的功能,为这些不同类型的元素增加新的操作。(开闭原则) 定义:表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素类的前提下定义作用于这些元素的新操作。模式结构图:(摘抄自刘伟主编的设计模式相关PPT)说明:Obje...原创 2018-03-04 07:44:28 · 176 阅读 · 0 评论 -
创建型模式之简单工厂模式
适用情况:工厂类负责创建的对象比较少:由于创建的对象比较少,不会造成工厂方法中的业务逻辑太过复杂。客户端只知道传入工厂类的参数,对于如何创建对象并不关心:客户端既不需要关心创建细节,甚至连类名都不需要记住,只需要知道类型所对应的参数。简单工厂模式是最简单的设计模式之一,它虽然不属于GoF23中设计模式,但是应用也较为频繁,同时它也是学习其他创建型模式的基础。创建型模式:顾名思义,创建型模式...原创 2018-03-10 10:02:28 · 158 阅读 · 0 评论 -
结构型模式之适配器模式 重要等级4 难度等级2
适用情况:系统需要使用现有的类,而这些类的接口不符合系统的需要。想要建立一个可以重复使用的类,用于一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。适配器模式可以使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 如:姚明使用翻译在NBA打球,才能听懂战术布置,这个翻译官就充当适配器的角色,再如Sun公司在1996年公开了Java语言的数据库连接工具JDBC,JDBC......原创 2018-03-10 08:27:05 · 167 阅读 · 0 评论 -
类行为型模式之模板方法模式 重要等级3难度等级2
适用环境:一次性实现一个算法的不变部分,并将可变行为留给子类来实现。各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。控制子类的拓展。对一些复杂的算法进行分割,将其算法中固定不变的部分设计为模板方法和父类具体方法,而一些可以改变的细节由其子类来实现。实际应用:模板方法模式广泛应用于框架设计(如Spring、Struts等)中,以确保父类控制处理流程的逻辑顺序。其结构中只存在父类和...原创 2018-03-15 09:56:10 · 109 阅读 · 0 评论 -
对象行为型模式之策略模式 重要等级4难度等级2
适用环境:如果在一个系统里面有许多类,他们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一个行为。一个系统需要动态地在几种算法中选择一种,那么可以将这些算法封装到一个个地具体算法类中,而这些具体算法类都是一个抽象算法类的子类。由于多态性原则,客户端可以选择使用任何一个具体算法类,并只需要维持一个数据类型是抽象算法类的对象。不希望客户端知道复杂的、与算法相关的数据结...原创 2018-03-15 07:58:24 · 113 阅读 · 0 评论 -
对象创建型模式之单例模式 重要等级 4难度等级 1
适用情况:系统只需要一个实例对象。客户调用类的单个实例只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例。如Windows操作系统中的任务管理器。试想,如果有多个窗口都打开着任务管理器,那么这些窗口显示的内容完全一致,则是重复对象,浪费内存资源;如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,与实际不符,也会给用户带来误解,不知道哪一个才是真正的状态。java....原创 2018-03-08 07:58:40 · 169 阅读 · 0 评论 -
生产者消费者模式
某个模块负责生产数据,这些数据由另一个模块来负责处理。生产数据的就叫生产者,处理数据的就叫消费者,在生产者和消费者之间加个缓冲区,形象地称之为仓库,这就就可以描述为生产者负责往仓库里添加商品,消费者就从仓库里拿商品,这就构成了生产消费者模式。常见的就是视频直播。附:https://blog.csdn.net/u011486491/article/details/77849326...转载 2019-01-07 10:53:06 · 107 阅读 · 0 评论