设计模式
文章平均质量分 81
开发者如是说
这个作者很懒,什么都没留下…
展开
-
设计模式-观察者模式
1、接口回调 在学习观察者模式之前,我们先了解一下接口回调的概念。两者的原理有些类似,理解了接口回调就非常容易理解观察者模式。 所谓接口回调一般应用的场合是:你不知道这个方法什么时候回返回,但是你希望在该方法结束的时候拿到方法执行的结果。常见的,比如一个方法内部开启了线程,而我们希望在线程执行结束的时候拿到线程的执行结果。 在下面的例子中,方法cal()定义了一个局部变量i,随后开启了一个线程,并...原创 2018-11-05 18:10:32 · 706 阅读 · 0 评论 -
设计模式--命令模式
命令模式命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也可支持撤销的操作。以下是一个典型的命令模式的类图:1.命令模式的组成命令模式由以下角色组成: 命令角色(Command):为所有的 命令声明了一个接口,调用命令对象的execute()方法,就可以让接收者进行相关的动作。这个接口也可以定义一个undo()方法,用于撤销命令。 具体命令角色(Concret原创 2017-11-20 22:14:32 · 674 阅读 · 0 评论 -
设计模式-工厂模式和抽象工厂
工厂模式工厂模式的类型还是比较多,相互之间有些细微的区别,不过都是用来创建新的对象了。所谓的工厂的含义就是用来生产对象的意思。使用它的好处是,我们可以将获取一个类的实例的操作封装到一个方法中。这样我们需要修改获取类的实例的逻辑的时候只要对该方法进行修改就可以了。我们这里可以将其分成三种类型。简单工厂模式以上就是简单工厂,它不属于23种里的一种,简单来理解就是创建一个工厂类用来根据条件返回不同类型的实原创 2017-11-22 17:26:04 · 690 阅读 · 0 评论 -
设计模式--适配器模式、外观模式
适配器模式和外观模式适配器模式将一个类的接口。转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。所谓适配器,你可以将其理解成将一种数据类型通过适配器让其适用于另一种类型。以上面的图为例。加入Client需要一个Targe类型(目标类型)的实体,但是我们只有一个Adaptee(被适配者)类型。这时候我们可以通过一个中间的适配器Adapter来完成。它的操作一点也不神秘,仅仅是让Ada原创 2017-11-22 17:28:22 · 740 阅读 · 0 评论 -
设计模式-构建者模式
构建者模式当一个类中包含的字段比较少的时候,我们直接在构造器中要求调用者在创建类的实例的时候传入各个字段就可以了。但是当类中包含的字段比较多的时候情况就会麻烦一些。在类中参数比较多的时候,通常有以下几种处理方法: 重叠构造器 使用Setter和getter在创建实例之后为每个字段赋值 使用构建者模式 1.重叠构造器在这种方式中,我们需要提供多个构造器:第一个是只有必要参数的构造器,第二个是包含两个参原创 2017-11-22 17:24:50 · 725 阅读 · 0 评论 -
设计模式--面向对象设计原则、UML
基础1、一些常用的UML标记 用 实线加> 来表示某个类中包含另一个类的实例的意思 用 实线加△ 来表示某个类继承了另一个类的意思 用 虚线加△ 来表示某个类实现了某个接口的意思 1.1 实体类的表示上图就是UML图中实体类的表示方法,类图分成三层:第一层是类名,如果类是抽象的,就用斜体表示;第二层是字段和属性;第三层是操作方法。如果方法或者属性是public的就在前面加’+’,private的加’原创 2017-11-20 22:16:06 · 808 阅读 · 0 评论 -
设计模式-模板模式
模板模式模板模式是一种非常实用的设计模式,它可以为我们节省大量的重复代码。甚至可以说,如果不了解模板设计模式就没有充分利用面向对象的好处。所谓模板就是为业务逻辑提供一种模板框架,而至于这些模板的每个模块该如何实现,我们将其交给子类。也就是说,我们在顶层基类中定义一个业务逻辑模板,子类需要根据自己的需求实现该模板中的一些方法。这里先给两个在实际应用中的例子,然后对模板模式的一些技巧进行总结。第一种示例原创 2017-11-22 17:27:54 · 737 阅读 · 0 评论 -
设计模式-观察者模式
观察者模式1.接口回调如果你理解接口回调的一些原理的话,理解观察者模式还是比较容易的。所谓接口回调一般应用的场合是“你不知道这个方法什么时候回返回”。比如,一个方法中定义了一个局部变量i,随后开启了一个线程,并在线程内部修改了i,我们希望i的修改的结果最终能够被我们获取到。那么我们该怎么做?使用return肯定不行,因为方法结束时,线程可能还没有结束,那么修改的内容我们可能获取不到。public i原创 2017-11-22 17:25:32 · 700 阅读 · 0 评论 -
设计模式-中介者模式
中介者模式中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。中介者模式主要用来解决对象与对象之间存在大量的关联关系时,导致系统非常复杂的问题,尤其是当多个类之间构成了网状的关系的时候。中介者模式通过将网状的结构,分离成为形状的结构来解决复杂的对象关联。具原创 2017-11-20 22:15:40 · 698 阅读 · 0 评论 -
设计模式-责任链模式
责任链模式责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。责任链模式涉及到的角色如下所示: 抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定原创 2017-11-20 22:14:58 · 648 阅读 · 0 评论 -
设计模式-4:单例模式
单例模式确保一个类只有一个实例,并提供一个全局访问点。在所有的设计模式中,单例模式是最简单也是最常用的一种设计模式,它只为一个实例提供一个全局对象,内次尝试去获取一个类的实例的时候,保证获取到的都是这一个对象。这里我们给出它在Java当中的几种写法.....原创 2017-11-22 17:23:42 · 1318 阅读 · 0 评论 -
设计模式-策略模式
策略模式定义了算法簇,分别封装起来,让它们之间可以相互替换,此种模式让算法的变化独立于使用算法的客户。以上图为例,如果某部分逻辑比较容易变动,我们可以将其定义成一个接口(IA)。然后根据情景的需求,对该接口采取不同的实现策略(A1, A2)。在实际使用中,我们只定义该接口的实例(即使用IA定义a),即所谓的“针对接口编程0”的策略,然后根据要求实例化一个需要的类型传入即可(将实例化的A1或者A2作为原创 2017-11-22 17:27:21 · 713 阅读 · 0 评论