设计模式
文章平均质量分 72
stable_阿甘
用心学习,用心做事
展开
-
22. 数据结构——职责链模式
类图:Handler(如Manager):定义一个处理请求的接口实现后继链ConcreteHandler(如JingLi、ZongJingLi):处理它所负责的请求如果可处理该请求,就处理之;否则转发给它的后继者Client向链上的具体处理者对象提交请求有多个对象可以处理同一个请求,哪个对象处理该请求在运行时刻自动确定你想在不明确接受者的情况下,想多个对象中的一个提交一个请求可处理一个请求的对象集合应该被动态指定。原创 2023-08-30 20:24:30 · 52 阅读 · 0 评论 -
21. 数据结构——迭代器模式
类图:Iterator(迭代器)迭代器定义访问和遍历元素的接口ConcreteIterator(具体迭代器)具体迭代器实现迭代器接口对该集合遍历时跟踪当前位置Aggregate(聚合)集合接口具体集合实现创建相应迭代器的接口,该操作返回ConcreteIterator的一个适当的实例。原创 2023-08-30 20:23:35 · 63 阅读 · 0 评论 -
20. 数据结构——组合模式
为组合中的对象声明接口在适当的情况下,实现所有类共有接口的缺省行为声明一个接口用于访问和管理Component的子组件Leaf(Rectangle、Line、Text等)在组合中表示叶节点对象,叶节点没有子节点在组合中定义图元对象的行为定义有子部件的那些部件的行为存储子部件在Component接口中实现与子部件相关的操作Client通过Component接口操纵组合部件的对象你想表示对象的部分-整体层次结构。原创 2023-08-30 20:22:07 · 33 阅读 · 0 评论 -
19. 状态变化——备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。原创 2023-08-30 20:20:25 · 25 阅读 · 0 评论 -
18. 状态变化——状态模式
与许一个对象在其内部状态改变时改变其行为,这个对象看起来就像改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。原创 2023-08-30 20:18:55 · 30 阅读 · 0 评论 -
17. 接口隔离——中介者模式
用一个中介对象来封装一些列对象的交互。中介者使得个对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。类图:**减少了子类生成。**中介者将原本分布于多个对象间的行为集中在一起。改变这些行为只需生成Meditator的子类即可。这样各个Colleague类可被复用**它将各Colleague解耦。**Mediator有利于各Colleague间的松耦合,你可以独立改变和复用各Colleague类和Mediator类**它简化了对象协议。原创 2023-08-30 20:18:04 · 29 阅读 · 0 评论 -
16. 接口隔离——适配器模式
将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。你想使用一个已经存在的类,而它的接口不符合你的要求;你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作。原创 2023-08-30 20:16:11 · 32 阅读 · 0 评论 -
15. 接口隔离——代理模式
上述场景分析中涉及到的是一种称为 “虚代理” 的情况,代理模式一共有4种常见情况。原创 2023-08-30 20:15:14 · 38 阅读 · 0 评论 -
14. 接口隔离——门面模式
为子系统中的一组接口提供一个一致(稳定)的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(服用)。Facade门面角色:客户端可以调用这个角色的方法。此角色直销子系统的所有功能和责任。一般情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去,也就说该角色没有实际的业务逻辑,只是一个委托类。subsystem子系统角色:可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。子系统并不知道门面的存在。原创 2023-08-30 20:11:45 · 33 阅读 · 0 评论 -
13. 对象性能——享元模式
用共享技术有效地支持大量细粒度的对象。 享元模式的定义为我们提出了两个要求:细粒度的对象和共享对象。要求细粒度对象,那么不可避免地使得对象数量多且性质相近,那我们就将这些对象的信 息分为两个部分:内部状态和外部状态。内部状态 内部状态时对象可共享出来的信息,存储在享元对象的内部并且不会碎环境改变而改变,如我们例子中的char c,他们可以作为一个对象的动态附加信息,不必直接存储在某个对象中,属于可以共享的部分。外部状态。原创 2023-04-13 19:05:32 · 64 阅读 · 0 评论 -
12 对象性能——单例模式
保证一个类仅有一个实例,并提供一个该实例全局访问点。原创 2023-04-13 18:57:49 · 55 阅读 · 0 评论 -
11. 对象创建——Builder模式
PersonDirector类就可以根据用户的选择来建造小人了,而在建造的过程在指挥者这里完成了,用户就不需要知道了,而且,由于这个过程每一步都是一定要做的,那就不会少让少画一只手、少画一条腿的问题出现了。像这种因为粗心而导致程序异常在平时开发中还是比较常见的,比如我们在程序里需要画100个不同的小人,在高矮胖瘦上有细微的差别,我们在每次创建小人时都用上述的代码,这样是很容易有遗漏。**主要解决:**主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;原创 2023-08-30 19:04:25 · 80 阅读 · 0 评论 -
10. 对象创建——原型模式
原型模式是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原创 2023-08-30 19:02:10 · 22 阅读 · 0 评论 -
9. 对象创建——抽象工厂
提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们的具体类。原创 2023-08-30 19:00:48 · 21 阅读 · 0 评论 -
8. 对象创建——工厂方法
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式使得一个类的实例化延迟到子类。原创 2023-08-30 18:59:48 · 29 阅读 · 0 评论 -
7. 对象创建——简单工厂
依据上面的实现方法,我们可以直接在Operation里新添加一个switch分支,但是这样导致的问题是如果频繁地添加运算符,就会频繁地修改Operation类,很容易在添加代码的时候将原有的代码改变。**分析:**其实,上面的实现方式违反了开放封闭原则,我们要使用一种结构,使得可以在不修改原有代码的基础上增加功能。此时,对于客户端来说,业务层使用的是什么计算逻辑是无感知的,就可以动态的添加运算符了,这就是简单工厂模式。**需求变更:**此时,我们需要新添加一个运算符,取余运算。原创 2023-08-30 18:50:49 · 26 阅读 · 0 评论 -
6. 单一职责——桥模式
桥模式原创 2023-01-28 20:43:48 · 63 阅读 · 0 评论 -
5. 单一职责——装饰者模式
装饰者模式原创 2023-01-28 20:42:16 · 68 阅读 · 0 评论 -
4. 组件协作——观察者模式
观察者模式原创 2023-01-28 20:38:18 · 68 阅读 · 0 评论 -
3. 组件协作——策略模式
定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。原创 2023-08-30 18:46:38 · 26 阅读 · 0 评论 -
2. 组件协作——模版方法模式
模版方法模式原创 2023-01-17 16:42:38 · 56 阅读 · 0 评论 -
1. 设计模式原则
设计模式八大原则原创 2023-01-17 16:41:23 · 58 阅读 · 0 评论 -
0. 设计模式介绍
设计模式介绍原创 2023-01-17 16:40:43 · 55 阅读 · 0 评论