自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 状态模式---行为型

3 相关模式(1)状态模式和策略模式 这是两个结构相同,功能各异的模式,具体的在策略模式里面讲过了,这里就不再赘述。(2)状态模式和观察者模式 这两个模式乍一看,功能是很相似的,但是又有区别,可以组合使用。这两个模式都是在状态发生改变的时候触发行为,只不过观察者模式的行为是固定的,那就是通知所有的观察者;而状态模式是根据状态来选择不同的处理。从表面来看...

2019-08-23 17:20:00 72

原创 访问者模式---行为型

使用场景:(1)如果想对一个对象结构实施一些依赖于对象结构中具体类的操作,可以使用访问者模式。(2)如果想对一个对象结构中的各个元素进行很多不同的而且不相关的操作,为了避免这些操作使类变得杂乱,可以使用访问者模式。把这些操作分散到不同的访问者对象中去,每个访问者对象实现同一类功能。(3)如果对象结构很少变动,但是需要经常给对象结构中的元素对象定义新的操作可以使用访...

2019-08-23 17:16:00 65

原创 责任链模式---行为型

使用场景:(1)如果有多个对象可以处理同一个请求,但是具体由哪个对象来处理该请求,是运行时刻动态确定的。这种情况可以使用职责链模式,把处理请求的对象实现成为职责对象,然后把它们构成一个职责链,当请求在这个链中传递的时候,具体由哪个职责对象来处理,会在运行时动态判断。(2)如果你想在不明确指定接收者的情况下,向多个对象中的其中一个提交请求的话,可以使用职责链模式。职责...

2019-08-23 17:09:00 106

原创 中介者模式(Mediator)---行为型

1 基础知识定义:用一个中介对象来封装一系列的对象交互。中介者使得各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。本质:封装交互使用场景:(1)如果一组对象之间的通信方式比较复杂,导致相互依赖、结构混乱,可以采用中介者模式,把这些对象相互的交互管理起来,各个对象都只需要和中介者交互,从而使得各个对象松散耦合,结构也更清晰易懂。(2)如果...

2019-08-23 17:02:00 136

原创 命令模式---行为型

3 相关模式(1)命令模式和组合模式 这两个模式可以组合使用。在命令模式中,实现宏命令的功能就可以使用组合模式来实现。前面的示例并没有按照组合模式来做,那是为了保持示例的简单,还有突出命令模式的实现,这点请注意。(2)命令模式和备忘录模式 这两个模式可以组合使用。在命令模式中,实现可撤销操作功能时,前面讲了有两种实现方式,其中有一种就是保...

2019-08-23 16:58:00 88

原创 备忘录模式---行为型

13 相关模式(1) 备忘录模式和命令模式这两个模式可以组合使用。命令模式实现中,在实现命令的撤销和重做的时候,可以使用备忘录模式,在命令操作的时候记录下操作前后的状态,然后在命令撇销和重做的时候,直接使用相应的备忘录对象来恢复状态就可以了在这种撤销的执行顺序和重做的执行顺序可控的情况下,备忘录对象还可以采用增量式记录的方式,有效减少缓存的数据量。(2) 备忘录模式...

2019-08-23 16:52:00 73

原创 Java代码实际应用中的易错点记录

1 创建对象在fight方法中想根据接收到的名字创建不同的对象,最后调用方法,其中palnt是一个接口这三种对象已经实现了该接口。但在运行时下面代码是错误的因为我在if中声明了plant其作用范围只在{ }有效,因此后面直接使用是错误的。public void fight(String name){ if ("Bean".equals(name)){ Pl...

2019-08-18 09:07:00 129

原创 观察者模式---行为型

1 基础知识定义:定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖(观察者)都会收到通知并更新。使用场景:关联行为场景,建立一套触发机制。优点:观察者和被观察者之间建立一个抽象的耦合;支持广播通信。缺点:观察者之间有过多的细节依赖、提高时间消耗及程序复杂度;要避免循环调用。...

2019-08-14 16:24:00 42

原创 观察者模式(Observer)---行为型

1 基础知识定义:定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖(观察者)都会收到通知并更新。本质:触发联动使用场景:关联行为场景,建立一套触发机制。(1)当一个抽象模型有两个方面,其中一个方面的操作依赖于另一个方面的状态变化那么就可以选用观察者模式,将这两者封装成观察者和目标对象,当目标对象变化的时候,依赖于它的观...

2019-08-14 16:24:00 84

原创 解释器模式---行为型

1

2019-08-14 16:19:00 54

原创 策略模式---行为型

1 基础知识定义:定义了算法家族,分别封装起来,让他们可以相互替换,此模式让算法的变化不会影响到使用算法的用户(应用层)。特征:可以替换掉大量的if else语句使用场景:系统有很多类,而区别仅在于行为不同;一个系统需要动态地在几种算法中选择一种。优点:符合开闭原则;避免使用多重条件转移语句;提高算法的保密性和安全性。缺点:客户端必须知道所有的策略类,并自行决定使用哪一个策略类;产生...

2019-08-14 15:47:00 47

原创 策略模式(Strategy)---行为型

1 基础知识定义:定义了算法家族,分别封装起来,让他们可以相互替换,此模式让算法的变化不会影响到使用算法的用户(应用层)。特征:可以替换掉大量的if else语句本质:分离算法,选择实现。使用场景:(1)出现有许多相关的类,仅仅是行为有差别的情况下,可以使用策略模式来使用多个行为中的一个来配置一个类的方法,实现算法动态切换。(2)出现同一个算法,有很多不同实现的情...

2019-08-14 15:47:00 72

原创 迭代器模式---行为型

1 基础知识定义:提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示使用场景:访问一个集合对象的内容而无需暴露它的内部表示;为遍历不同的集合结构提供一个统一的接口优点: 1、它支持以不同的方式遍历一个聚合对象。 2、迭代器简化了聚合类。 3、在同一个聚合上可以有多个遍历。缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,...

2019-08-14 15:32:00 49

原创 模板方法---行为型

1 基础知识定义:定义了一个算法的骨架并允许子类为一个或多个步骤提供实现。特征:模板方法使得子类可以在不改变算法结构的前提下重新定义某些步骤。使用场景:一次性实现一个算法的不变部分,将可变的行为留给子类实现;各子类中公共的行为被提取出来并集中到一个公共的父类中从而避免代码重复。优点:提高复用性、扩展性;符合开闭原则。缺点:类数目增加;增加了系统实现的复杂度;模板方法主要通过继承实现,继...

2019-08-14 12:46:00 70

原创 模板方法(Template Method)---行为型

1 基础知识定义:定义了一个算法的骨架并允许子类为一个或多个步骤提供实现。特征:模板方法使得子类可以在不改变算法结构的前提下重新定义某些步骤。使用场景:(1)需要固定定义算法骨架,实现一个算法的不变的部分,并把可变的行为留给子类来实现的情况。(2)n各个子类中具有公共行为,应该抽取出来,集中在一个公共类中去实现,从而避免代码重复(3)需要控制子类扩展的情况。模板方法模...

2019-08-14 12:46:00 49

原创 桥接模式---结构型

1 基础知识定义:将抽象部分与它的具体实现部分分离,使得它们都可以独立变化。特征:通过组合的方式建立两个之间的联系而不是继承。使用场景:抽象和具体实现之间增加更多的灵活性;一个类存在两个(多个)独立变化的维度,且这两个(多个)维度需要独立扩展即抽象和具体实现独立扩展;不希望使用继承或因多层继承导致类爆炸。优点:分离抽象部分及具体实现部分;提高了系统的可扩展性;符合开闭原则;符合合成复用...

2019-08-14 12:16:00 87

原创 桥接模式(Bridge)---结构型

1 基础知识定义:将抽象部分与它的具体实现部分分离,使得它们都可以独立变化。特征:通过组合的方式建立两个之间的联系而不是继承。使用场景:抽象和具体实现之间增加更多的灵活性;一个类存在两个(多个)独立变化的维度,且这两个(多个)维度需要独立扩展即抽象和具体实现独立扩展;不希望使用继承或因多层继承导致类爆炸。优点:分离抽象部分及具体实现部分;提高了系统的可扩展性;符合开闭原则;符...

2019-08-14 12:16:00 62

原创 组合模式---结构型

1 基础知识定义:将对象组合成树形结构以表示“部分-整体”的层次结构。特征:组合模式使得客户端对单个对象和组合对象保持一致的方式处理。使用场景:希望客户端可以忽略组合对象与单个对象的差异;处理一个树形结构时。优点:清楚定义分层次的复杂对象,表示对象的全部或部分层次;让客户端忽略了层次的差异,方便对整个层次结构控制;简化了客户端代码;符合开闭原则。缺点:限制类型时会比较复杂;使设计变得更...

2019-08-14 12:07:00 72

原创 组合模式(Composite)---结构型

1 基础知识定义:将对象组合成树形结构以表示“部分-整体”的层次结构。特征:组合模式使得客户端对单个对象和组合对象保持一致的方式处理。本质:统一叶子对象和组合对象。目的:让客户端不再区分操作的是组合对象还是叶子对象,而是以一个统一的方式来操作。使用场景:希望客户端可以忽略组合对象与单个对象的差异;处理一个树形结构时。优点:清楚定义分层次的复杂对象,表示对象的全部或部分...

2019-08-14 12:07:00 83

原创 享元模式---结构型

1 基础知识定义:提供了减少对象数量从而改善应用所需的对象结构的方式。特征:运用共享技术有效支持大量细粒度的对象。使用场景:应用于系统底层的开发,以便解决系统的性能问;系统有大量的相似对象、需要缓冲池场景。优点:大大减少对象的创建,降低系统的内存,使效率提高;减少内存之外其他资源占用。缺点:提高了系统的复杂度,需要分离出外部状态和内部状态,而且外部状态具有固有化的性质,不应该随着内部...

2019-08-14 10:57:00 78

原创 享元模式(Flyweight)---结构型

1 基础知识定义:提供了减少对象数量从而改善应用所需的对象结构的方式。特征:运用共享技术有效支持大量细粒度的对象。本质:分离与共享。使用场景:(1)如果一个应用程序使用了大量的细粒度对象,可以使用享元模式来减少对象数量。如果由于使用大量的对象,造成很大的存储开销,可以使用享元模式来减少对象数量,并节约内存。(2)如果对象的大多数状态都可以转变为外部状态,比如通过计算得...

2019-08-14 10:57:00 55

原创 适配器模式---结构型

1 基础知识定义:将一个类的接口(被适配者)转换成客户期望的另一个接口(目标)。特征:使原本接口不兼容的类可以一起工作。本质:转换匹配,复用功能。把不兼容的接口转换为客户端期望的样子从而实现功能的复用。使用场景:已经存在的类,它的方法(接口)和需求不匹配时的解决方案。注意适配器模式不是软件设计阶段需要考虑的设计模式,而是随着软件维护,由于不同产品不同厂家造成功能类似而接口不相同情况下的...

2019-08-14 09:58:00 52

原创 适配器模式(Adapter)---结构型

1 基础知识定义:将一个类的接口(被适配者)转换成客户期望的另一个接口(目标)。特征:使原本接口不兼容的类可以一起工作。本质:转换匹配,复用功能。把不兼容的接口转换为客户端期望的样子从而实现功能的复用。使用场景:已经存在的类,它的方法(接口)和需求不匹配时的解决方案。注意适配器模式不是软件设计阶段需要考虑的设计模式,而是随着软件维护,由于不同产品不同厂家造成功能类似而接口不相...

2019-08-14 09:58:00 144

原创 装饰者模式---结构型

1 基础知识定义:在不改变原有对象的基础上,将功能附加到对象上。特征:提供了比继承更有弹性的替代方案。使用场景:扩展一个类的功能或给一个类添加附加的职责;动态给一个对象添加功能,这些功能还可以动态撤销。优点:比继承更加灵活,继承是静态的在设计之初就确定好了而装饰者是动态的扩展功能;通过使用不同的装饰类或装饰类的排列组合可以达到不同的效果;符合开闭原则。缺点:会出现更多的代码,更多的类使...

2019-08-13 22:22:00 121

原创 装饰者模式(Decorator)---结构型

1 基础知识定义:在不改变原有对象的基础上,将功能附加到对象上即动态地给一个对象添加一些额外的职责。特征:提供了比继承更有弹性的替代方案。本质:动态组合。使用场景:扩展一个类的功能或给一个类添加附加的职责;动态给一个对象添加功能,这些功能还可以动态撤销。优点:比继承更加灵活,继承是静态的在设计之初就确定好了而装饰者是动态的扩展功能;通过使用不同的装饰类或装饰类的排列组合可...

2019-08-13 22:22:00 37

原创 外观模式---结构型模式

1 基础知识定义:提供了一个统一的接口,用来访问子系统中的一群接口。特征:定义了一个高层接口让子系统更容易使用使用场景:子系统复杂,增加外观模式提供调用接口;当构建多层系统时利用外观对象作为每层的入口简化层间调用。优点:简化了调用过程,无需深入了解子系统;减少系统依赖、松散耦合;符合迪米特原则。缺点:增加子系统、扩展子系统行为时容易引入风险;不符合开闭原则。2 代码示例场...

2019-08-13 19:34:00 70

原创 外观模式(Facade)---结构型模式

1 基础知识定义:提供了一个统一的接口(外观类),用来访问子系统中的一群接口。特征:定义了一个高层接口让子系统更容易使用,减少了外部与子系统内多个模块的耦合。本质:封装交互,简化调用。优点:简化了调用过程,无需深入了解子系统;减少系统依赖、松散耦合;符合迪米特原则。缺点:增加子系统、扩展子系统行为时容易引入风险;不符合开闭原则当增加功能时外观类也要发生变化。使用场景:...

2019-08-13 19:34:00 102

原创 原型模式

1 基础知识定义:原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。特征:不需要知道任何创建的细节,不调用构造方法。使用场景:(1)类初始化消耗较多资源(2)new产生的一个对象需要非常繁琐的过程(数据准备、访问权限等)(3)构造函数比较复杂(4)循环体中生产大量的对象。优点:性能比直接new要高、简化了创建过程缺点:必须配备克隆方法、当进行复杂对象的克隆时要灵活运...

2019-08-13 16:56:00 191

原创 原型模式(Prototype)---创建型

1 基础知识定义:原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。特征:不需要知道任何创建的细节,不调用构造方法。本质:克隆生成对象。原型模式会要求对象实现一个可以“克隆”自身的接口,这样就可以通过拷贝或者是克隆一个实例对象本身来创建一个新的实例。如果把这个方法定义在接口上,看起来就像是通过接口来创建了新的接口对象。这样一来,通过原型实例创建新的对象,就不再需要关心...

2019-08-13 16:56:00 113

原创 建造者模式

1 定义域特征定义:将一个复杂的对象构建与其表示分离,使得同样的构建过程可以创建不同的表示。特征:用户只需要指定需要建造的类型即可,对于中间的细节不考虑。2 代码实现及分析场景:假设一个课程有许多部分组成:PPT、视频、手记、问答,需要在应用层根据不同要求创建不同的课程并设置相应的组成部分。course类://课程类public class Course { ...

2019-08-13 14:29:00 77

原创 建造者模式(Builder)---创建型

1 定义域特征定义:将一个复杂的对象构建与其表示分离,使得同样的构建过程可以创建不同的表示。特征:用户只需要指定需要建造的类型即可,对于中间的细节不考虑。本质:分离整体构建算法和部件构造。构建一个复杂的对象,本来就有构建的过程,以及构建过程中具体的实现。生成器模式就是用来分离这两个部分,从而使得程序结构更松散、扩展更容易、复用性更好,同时也会使得代码更清晰,意图更明确。 ...

2019-08-13 14:29:00 74

原创 UML图

1 类图(1)UML箭头方向:从子类指向父类。定义子类时需要通过extends关键字,因此子类一定知道父类但父类不知道子类。(2)空心三角+实线:继承;虚线:实现。空心三角:继承或实现。实线表继承很结实;虚线比较虚只是简单实现某个接口。(3)箭头+实线:关联,+虚线:依赖。实线:关系比较稳定,关联关系通常一个类中有另一个类作为属性。虚线:临时用一下,一般是一个类用另一个类作为参数或...

2019-08-12 17:02:00 83

原创 前端部分框架

1 界面设计SUI Mobile 阿里下的一个前端设计界面2 css在前,js在后在编写html界面时,一般把css的引入写在head中,而js的引入写在最后面的body中,因为css控制的是整体框架,而js是内容先有整体框架再填充内容这样视觉上比较好看。...

2019-08-02 14:49:00 47

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除