设计模式
是FFFZZY呀
这个作者很懒,什么都没留下…
展开
-
工厂模式
工厂模式有三类,分别是简单工厂模式,工厂方法模式和抽象工厂模式一,简单工厂模式课本上给出的例子是制造一个计算器,我们知道一个计算器需要输入进行运算的两个数,还要给出进行什么样的运算,如果使用单纯的结构化编程则会导致大量的代码重复,导致难以维护那么我们可以这样来考虑,两个数据是固定的,那我们我们只需要把加减乘除类分别包装起来就可以,又因为加减乘除类有很多的代码是重叠的,我们可以定义...原创 2019-05-11 15:53:20 · 100 阅读 · 0 评论 -
建造者模式
一,模式概述1.将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示2.在有些情况下,一个对象有一些重要的性质,在他们没有恰当的值之前,对象不能作为一个完整的产品使用。比如,一个电子邮件有发件人地址,收件人地址,主题,内容,附录等部分,而最起码的收件人地址没有被复制之前,这个电子邮件不能被发出3.在有些情况下,一个对象的一些性质必须按照某个顺序赋值才有意义。在某...原创 2019-05-29 20:38:50 · 83 阅读 · 0 评论 -
适配器模式
一,模式简介从图中可以看出客户端需要调用Request方法,而Adaptee没有这个方法,为了使客户端能够使用Adaptee类,需要提供一个包装(Wrapper)类Adapter,这个包装类包装了一个Adaptee实例,从而将客户端与Adaptee衔接起来。由于Adapter与Adaptee是委派(组合)关系,这也决定了这个适配器模式是对象的2.Target(目标)角色:这是客户所期待...原创 2019-06-02 00:04:07 · 104 阅读 · 0 评论 -
职责链模式
一,模式简介1.客户端发出一个请求,会有很多对象都来处理这个请求,而且不同对象的处理逻辑是不一样的2.对于客户端而言,无所谓谁来处理,反正有对象来处理就可以了,而且在上述处理中,还希望处理流程是可以灵活变动的,而处理请求的对象需要能方便地修改或者被替换掉,以适应新的业务功能的需要3.职责链模式使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一...原创 2019-06-01 00:08:13 · 404 阅读 · 0 评论 -
状态模式
一,模式简介1.状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的逻辑简化2.允许一个对象在其内部状态改变时改变它的行为,这个对象看起来你似乎修改它的类3.状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的逻辑判断转移到表示不同状态的一系列类中,可以把复杂的逻辑简化4.当...原创 2019-05-31 23:27:51 · 161 阅读 · 0 评论 -
观察者模式
一,模式简介1.以课本上为例,讲的是前台通知员工老板到来,具体的代码为:主题接口:具体的观察者实现:抽象订阅者类:具体订阅者实现:客户端调用:2.观察者模式又叫做发布-订阅模式模型-试图模式源-监听器模式从属者模式3.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,...原创 2019-05-31 21:42:02 · 152 阅读 · 0 评论 -
外观模式
一,模式简介1.外观模式要求一个子系统的外部与其内部的通信必须通过一个统一的外观(Facade)对象进行。外观模式提供一个高层次的接口,使得子系统更易于使用2.就例如医院的接待员一样,外观模式的外观类将客户端与子系统的内部复杂性分隔开,使得客户端只需要与外观对象打交道,而不需要与子系统内部的很多对象打交道3.外观模式没有具体的UML图有一个概括的图二,模式解析1.(1...原创 2019-05-28 22:39:40 · 129 阅读 · 0 评论 -
模板方法模式
一,模式简介1.由考试答题的例子想到,如果我们每一个考生都定义一个特定的接口,那么这样就会造成大量的代码冗余我们可以这样来考虑准备一个抽象类,将部分逻辑以具体方法以及具体子类的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法的用意具体代码:首先是试卷类,定义成抽象类,然后以抽象方...原创 2019-05-27 23:21:41 · 106 阅读 · 0 评论 -
原型模式
一,基本概念原型模式的用意是:通过给出一个原型对象来指明所要创建的对象类型,然后复制这个原型对象的办法创建出更多的对象。克隆的实现有两种:浅拷贝和深拷贝浅拷贝:只负责克隆按值传递的数据(比如基本数据类型,String类型)深拷贝:除了浅拷贝要克隆的值外,还负责克隆引用数据类型(属性的类型也是对象)的数据需要注意的是执行深拷贝之后,原来的对象和新创建的对象之间不会共享任何东西,改...原创 2019-05-18 16:12:59 · 101 阅读 · 0 评论 -
代理模式
代理模式一,基本部分这个例子是以送花的形式为基础向我们介绍的比如说A是校花,B认识A,也认识C,C想要追求A,这时候C就拜托B去送花,送巧克力,并且表达爱意,这样一来C和A并没有直接的见面,但是C的东西都成功的送到了A的手里在以上的过程中就是代理模式的典型,其中B起到的就是代理的作用我们用UML来显示:其中代理里面含有追求者的引用,也就是在代理模式的构造函数中...原创 2019-05-17 15:26:00 · 138 阅读 · 0 评论 -
设计模式的设计原则
单一职责原则(SRP) 就一个类而言应该仅有一个引起它变化的原因 如果一个类承担的职责过多,就等于把这些职责耦合在一起,那么一个职责的变化就可能会削弱或者抑制这个类完成其他职责的能力 难点在于如何区分职责,职责的粒度问题 单一职责适用于:接口,类,方法开放封闭原则(OCP):一个软件实体应当对外扩展开放,对修改关闭关键: 合理地抽象,分离出变化与...原创 2019-05-12 14:50:53 · 117 阅读 · 0 评论 -
策略模式
一,例子引入在商场中我们会遇到这样的问题,就是对于会员和普通顾客的优惠不同,节假日和平常的日子不同,如果我们只写一个算法的话,在维护的时候就会出现很多的麻烦那么有什么解决办法呢?我们这个时候就可以采用策略模式:各个职责的角色:环境角色(CashContext):里面有一个Strategy类的引用(上下文对象),负责和具体的策略类交互抽象角色(CashSuper):这是一...原创 2019-05-15 21:03:59 · 115 阅读 · 0 评论 -
装饰者模式
从我们的穿衣打扮开始如果我们要按照如下的方式对自己进行穿衣打扮:这样造成的问题是:如果要增加其他装扮,那么就需要修改Person类,违背了开放封闭原则我们可以用装饰者模式来进行解决这个问题装饰者模式对客户端以透明的方式扩展对象的功能,是继承关系的一个替代方案具体的实现代码:总的抽象类:人实现的接口:Person实现一个抽象的接口,实现的...原创 2019-05-14 21:41:03 · 234 阅读 · 0 评论 -
UML图的各类符号解析
在UML图中通常有以下几种符号分别是:继承(泛化),实现,依赖,关联,聚合,组合一,依赖:符号表示:表示一个类依赖于另一个类的定义也就是说在A中有对于B的以下几种情况的调用(1)局部变量(2)方法的参数(3)静态方法的调用public classA{//局部变量public void function1(){ClassB b=new Clas...原创 2019-05-09 19:34:17 · 3218 阅读 · 0 评论 -
备忘录模式
1.备忘录模式的关键就是要在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以利用该保存的状态实施恢复操作2.结构图:原发器(Originator):创建一个备忘录,并存储他当前的内部状态,也可以使用备忘录来恢复其内部状态Memento(备忘录):储存原发器的内部状态,备忘录的设计一般可以参考原发器的设计,根据实际需要确定备忘录中的属性Ca...原创 2019-06-02 14:30:35 · 318 阅读 · 0 评论