![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
kangswx
记录自己的学习历程,欢迎关注、交流
展开
-
设计模式--观察者模式
观察者模式定义了对象之间的一对多的依赖关系,当一个对象改变状态时,它的所有依赖着都会受到通知并且自动更新。观察者模式的UML图Subject:抽象主题,把所有对观察者的引用保存在一个聚集里,每一个主题可以有多个观察者。Observer:抽象观察者,为所有具体观察者定义了一个接口,在得到主题的通知时能够及时更新自己。ConcreteSubject具体主题,在具体主题发生改变时,给所...原创 2020-01-06 23:33:34 · 340 阅读 · 0 评论 -
设计模式--备忘录模式
备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,在以后的某个时间点可以恢复到之前保存的状态。备忘录模式的UML图Originator:原发器,负责创建一个备忘录,用来记录对象当前的状态,也可以用来恢复一个对象之前的某个状态。同时原发器还可以根据需要决定Memento存储Originator的那些内部状态。Memento备忘录,用来存储Ori...原创 2020-01-05 22:45:00 · 183 阅读 · 0 评论 -
设计模式--中介者模式
中介者模式可以提供双方的媒介,而代理者模式只能代理其中的一方终结者模式用一个终结对象类封装一系列的对象交互,中介者使各对象不需要显式的相互引用,达到解耦的效果,并且可以独立的改变他们之间的交互。中介者模式的UML图Mediator抽象中介者模式;ConcreteMediator具体中介者,需要知道所有具体同事类,同时需要从具体同事类那里接受信息,并且向具体同事类发送信息;C...原创 2020-01-05 14:56:47 · 321 阅读 · 0 评论 -
设计模式--迭代器模式
迭代器模式(Interator)提供了一种顺序访问一个聚合对象中的各种元素,而又不暴露该对象内部。迭代器模式的UML图Interator,遍历器角色,定义遍历元素需要的方法,一般会有三个方法,next(),hasNext(),remove();Concrete Interator具体迭代器,完成集合的迭代;Aggegate一般是一个接口,提供了intorator()的方法,例如C...原创 2020-01-04 23:49:43 · 172 阅读 · 0 评论 -
设计模式--解释器模式
解释器模式就是定义语言的文法,并且建立一个解释器来解释该语言中的句子解释器模式的UML图AbstractExpression抽象表达式。TerminalExpression,终结符表达式,解释结果的;NonterminalExpression,非终结符表达式,一般以子类的形式出现;Context,环境类,存储符号和其他信息,以便于获取解释结果之前的存储;Client客户类解...原创 2020-01-04 22:36:01 · 124 阅读 · 0 评论 -
设计模式--命令模式
将请求封装成对象,以便使用不同的请求、日志、队列等来参数化其他对象。命令模式也支持撤销操作(回到之前的状态,并非命令的拦截)。命令模式的UML图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-io6GmzYH-1578129548928)(C:\Users\Kangs\AppData\Roaming\Typora\typora-user-images\im...原创 2020-01-04 17:19:39 · 92 阅读 · 0 评论 -
设计模式--责任链模式
责任链模式: 避免请求接受者和发送者耦合在一起,让多个对象都可以接受请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。客户端和处理者都没有对方的明确信息,处理者也不知道责任链中的结构。责任链可以简化对象的相互连接,他们只保存一个指向其后续处理者的引用。客户提交请求后,请求沿着链往下传递直到有一个请求处理者处理为止。在责任链模式中我们可以随时随地的增加或者更...原创 2020-01-04 15:59:24 · 98 阅读 · 0 评论 -
设计模式--代理模式
代理模式就是给一个对象提供了一个代理对象,并由代理对象控制对原对象的引用起到了一个中介的作用,它连接客户端和目标对象代理模式的UML图subject:抽象角色,声明真实对象和代理对象的共同接口。proxy:代理角色,代理对象与真实对象实现相同的接口,所以它在任何时刻都能够代理真实对象,内部包含对真实对象的引用。realsubject真实角色,代表着真实的对象。按照代理...原创 2019-12-31 22:01:46 · 75 阅读 · 0 评论 -
设计模式--享元模式
享元模式使用共享技术(开辟一块静态的存储区域,将相似的对象放入该静态区域),实现相同或者相似对象大量细粒度的对象复用,达到共享类或者对象的目的。减少了空间复杂度,加大了时间复杂度系统使用少量的对象,而这些都比较相似,状态变化小,可以实现对象的多次复用。享元模式中两个重要的概念内部状态:在享元对象内部不随外界环境改变而改变的共享部分。外部状态:随着环境的改变而改变,不能够...原创 2019-12-29 15:25:30 · 97 阅读 · 0 评论 -
设计模式--外观模式
外观模式的目的在于如何简化接口,可以将多个类的复杂的一切隐藏在背后,值显露一个干净美观的外观。所谓的外观模式就是提供一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高级接口,让子系统更容易使用,外观模式的UML图外观模式的代码实现创建3个子部件/** * 子系统角色:空调 */public class Air { public v...原创 2019-12-29 12:35:06 · 106 阅读 · 0 评论 -
设计模式--装饰者模式
给类或对象添加行为的方式使用继承,这是一个静态的方式,在编译的时候就已经决定了子类的行为,不便于空值增加子类行为的方式和时机。适用关联,将一个对象嵌入到另一个对象中,这是一种动态的方式,可以在应用程序中动态的控制。装饰者模式在不改变原类文件和继承(与适配器模式的小的区别)的情况下,动态的扩展一个对象的功能。装饰者模式通过创建一个包装对象(装饰对象)包裹真实的对象。适配...原创 2019-12-28 21:09:33 · 96 阅读 · 0 评论 -
设计模式--组合模式
组合模式:组合多个对象形成树形结构以表示"整体-部分"的结构层次。组合模式对单个对象(叶子对象)和组合对象(组合对象)具有一致性,它将对象组织到树结构中,可以用来描述整体与部分的关系。同时他也模糊了简单元素(叶子对象)和复杂元素(容器对象)的概念,使得客户能够像处理简单元素一样来处理复杂元素,即使客户程序与复杂元素的内部结构解耦。组合模式最关键的地方:叶子对象和组合对象实现相同的接...原创 2019-12-28 19:05:41 · 121 阅读 · 0 评论 -
设计模式--桥接模式
桥接模式将继承关系转化成关联关系,降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。桥接模式的UML图桥接模式的代码实现创建一个抽象类/** * 抽象类,交接模式的最终目的就是建立一个抽象类的对象,结构型模式注重的是对象的结构创建, * 这种模式不负责生产对象 */public abstract class Car { /** * ...原创 2019-12-28 15:54:31 · 156 阅读 · 0 评论 -
设计模式--适配器模式
问题的请提出:有一个系统需要和新的库搭配使用,但是这个库提供的接口与现有的系统不兼容,需要不改变现有系统的情况下解决这个 问题,就需要将新库的接口转化成当前系统需要的接口,这个时候就需要用到适配器模式。适配器模式:讲一个类的接口转化成另一个接口,让原本接口不兼容的类实现交互。在适配器模式中,需要定义一个包装类,包装不兼容接口的对象,这个包装类就是适配器,它所包装的对象就是适配者。...原创 2019-12-23 21:47:37 · 132 阅读 · 0 评论 -
设计模式--建造者模式
建造者模式与工厂模式的区别建造者模式关心的是对象创建过程中的细节工厂模式关心的是对象创建的整体建造者模式将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。建造者模式构建复杂对象就像造汽车一样,一个一个组件一个一个步骤创建出来的,允许用户通过制定对象类型和内容来创建,但是用户不需要知道这个复杂对象的构建过程,只需要明白通过某种方式就可以获得一个复杂对象的实...原创 2019-12-21 12:42:42 · 88 阅读 · 0 评论 -
设计模式--单例模式
在某些情况下只需要某个对象只能有一个实例,就需要用到单例模式。单例模式的特点只有一个实例必须要自行实例化必须自行向整个系统停工访问点饿汉式单例模式的代码实现/** * 懒汉式单例模式 */public class LazySongleton { private static LazySongleton lazySongletonInstance; ...原创 2019-12-15 11:05:23 · 104 阅读 · 0 评论 -
设计模式--抽象工厂模式
工厂方法模式中只能创建一类对象,但是不能创建多个类型的产品。产品族是在抽象工厂模式中,在抽象工厂模式中,产品组是指有同一个工厂生产位于不同产品等级结构中的一组产品。抽象工厂模式提供一个接口,用于创建相关或者依赖的对象的家族,而不需要明确指定具体类。抽象工厂允许客户端使用抽象的接口来创建一组相关的产品,而不需要关心实际产出的具体产品是什么,这样,客户就可以从具体的产品中被解耦...原创 2019-12-14 22:27:03 · 98 阅读 · 0 评论 -
设计模式--工厂模式
工厂模式一定要面向接口编程,将工厂类设计为接口类型,将createPizzaf()方法放在子类中,那么子类进行createPizza方法的具体实现。工厂方法模式定义了一个创建对象的接口,但有子类决定要实例化哪一个类。工厂方法模式让实例化推迟到子类。工厂模式数据建造者模式中的类创建型。工厂模式的UML图工厂模式是面向接口编程的动态工厂模式。工厂方法模式是简单工厂模...原创 2019-12-14 15:37:51 · 111 阅读 · 0 评论 -
设计模式--简单工厂模式
将一个对象的创建移到里一个类里面了。简单工厂模式又称为静态工厂方法,属于创建型模式。在简单工厂模式中,可以根据传递的参数不同,返回不同的实例。简单工厂模式定义了一个类,这个类专门用于创建其他类的实例,这些被创建的类都有一个共同的父类。简单工厂模式的UML图简单工厂模式的优点:实现了堆责任的分割,提供了专门的工厂类用于创建对象。客户端无需知道所创建的具体的产品的类名,只...原创 2019-12-14 13:56:05 · 92 阅读 · 0 评论