自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 一列数的规则如下:1、1、2、3、5、8、13、21、34…求第30位数是多少,用递归算法实现

代码】一列数的规则如下:1、1、2、3、5、8、13、21、34…求第30位数是多少,用递归算法实现。

2022-08-12 12:55:32 595 1

原创 建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C。要求线程同时运行,交替打印10次ABC,写出实现代码。

代码】建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C。要求线程同时运行,交替打印10次ABC,写出实现代码。

2022-08-12 12:29:17 314

原创 【设计模式】访问者模式(Visitor Pattern)

1. 模式结构 2. 角色(1) Visitor(抽象访问者)尽量将对不同元素的访问方法名命名一致(2) ConcreteVisitor(具体访问者)(3) Element(抽象元素)在accept方法中回调访问者中的visit方法对自身进行操作(4) ConcreteElement(具体元素)(5) ObjectStructure(对象结构)聚合元素对象对元素对象进行遍历3. 特点可以在不改变各元素的类的前提下定义作用于这些元素的新

2022-06-17 11:38:29 128

原创 【设计模式】模板方法模式(Template Method Pattern)

1. 模式结构 2. 角色(1) AbstractClass(抽象类)(2) ConcreteClass(具体子类)3. 模板方法Template Method把基本方法组合在一起形成一个总算法或一个总行为的方法4. 基本方法抽象方法(Abstract Method):由抽象类定义,由子类实现具体方法(Concrete Method):具体实现的方法,子类可重写钩子方法(Hook Method):空实现方法,或返回默认boolean值控制算法步骤的方

2022-06-17 11:37:35 118

原创 【设计模式】策略模式(Strategy Pattern)

1. 模式结构 2. 角色(1) Context(环境类)调用算法的类(2) Strategy(抽象策略类)定义算法的方法(3) ConcreteStrategy(具体策略类)具体实现算法3. 区别状态模式处理的问题不一样状态模式状态之间可以相互转换状态模式中环境类和状态类之间可以有双向关联的关系4. 特点结构与简单状态模式一致对“开闭原则”完美支持可以配合享元模式避免生成过多的具体策略类对象5. 应用JavaSE容器布局.

2022-06-17 11:36:40 63

原创 【设计模式】状态模式(State Pattern)

1. 模式结构(简单状态模式) 2. 角色(1) Context(环境类)拥有状态的类调用具体状态的方法(2) State(抽象状态类)定义一个状态的相关特定行为不同子类的具体行为实现不一样(3) ConcreteState(具体状态类)每一个子类实现特定的相关实现3. 简单状态模式状态之间无须进行状态转换遵循“开闭原则”4. 可切换状态的状态模式可以在状态类中聚合Context,即Context与State双向关联当每次调用具体状态

2022-06-17 11:35:38 66

原创 【设计模式】观察者模式(Observer Pattern)

1. 模式结构 2. 角色(1) Subject(目标)聚合了一个观察者集合被观察的对象,由该类发出通知定义了添加观察者、移除观察者、通知方法(2) ConcreteSubject(具体目标)(3) Observer(观察者)(4) ConcreteObserver(具体观察者)3. 特点一对一或一对多的对象交互场景4. 应用Java事件处理模型ServletMVC模式蕴含了中介者模式、观察者模式...

2022-06-17 11:34:48 53

原创 【设计模式】备忘录模式(Memento Pattern)

1. 模式结构 2. 角色(1) Originator(原发器)产生备份信息的类提供生成备忘录和加载备忘录的方法(2) Memento(备忘录)一次备份提供设置备份信息和获取备份信息的方法(3) Caretaker(负责人)聚合一个或者多个备忘录,提供写入备份和取出备份的方法3. 特点为了确保备忘录的封装性,除了原发器外,其他类不能也不应该访问备忘录类在Java中通过将备忘录类设为默认的包内可见性,同时原发器和备忘录放在同一个包中来实现对备忘录的

2022-06-17 11:33:47 123

原创 【设计模式】中介者模式(Mediator Pattern)

1. 模式结构 2. 角色(1) Mediator(抽象中介者)拥有注册方法,将同事类注册到中介者的容器中同时调用同事类设置中介者的方法拥有通信方法并内部调用同事类接收方法,由同事类的发出方法调用(2) ConcreteMediator(具体中介者)实现具体容器和方法在通信方法中可对通信的信息进行加工处理(3) Colleague(抽象同事类)成员变量为同事的名称和中介者成员变量的getter和setter方法发出方法和接收方法(4) Conct

2022-06-16 18:53:13 81

原创 【设计模式】迭代器模式(Iterator Pattern)

1. 模式结构 2. 角色(1) Iterator(抽象迭代器)定义迭代器方法(2) ConcreteIterator(具体迭代器)一般为具体聚合类的内部类,可以直接访问聚合类的所有变量与方法成员变量index实现迭代器方法(3) Aggregate(抽象聚合类)定义获取迭代器方法(4) ConcreteAggreate(具体聚合类)包括聚合的数据对象实现获取迭代器的方法3. 特点支持以不同方式遍历一个聚合对象迭代器简化了聚合类在同

2022-06-16 18:52:16 47

原创 【设计模式】解释器模式(Interpreter Pattern)

1. 模式结构 2. 角色(1) AbstractExpression(抽象表达式)所有表达式的父类,声明了统一的方法(2) TerminalExpression(终结表达式)一般为具体值(3) NonterminalExpression(非终结符表达式)可设置多个该类型子类,表示多种不同操作类内部聚合多个抽象表达式(4) Context(环境类)存储全局信息,可省略(5) Client(客户类)一般解释器最终返回一个抽象表达式类,在客户类

2022-06-16 18:51:12 63

原创 【设计模式】命令模式(Command Pattern)

1. 模式结构 2. 角色(1) Command(抽象命令类)声明命令方法(2) ConcreteCommand(具体命令类)聚合接收者,调用接收者来实现抽象命令类定义的方法(3) Invoke(调用者) 请求的发出者(4) Receiver(接收者)被调用者,具体业务实现在接收者中(5) Client(客户类)3. 扩展配合组合模式设计宏命令(组合命令)方便地实现Undo和Redo4. 特点通过命令体系使得调用者和接收者

2022-06-16 18:49:28 40

原创 【设计模式】职责链模式(Behavioral Pattern)

1. 模式结构 2. 角色(1) Handler(抽象处理者)一般为抽象类模式关键点在于Handler聚合一个自类型并提供set方法来设置后继(2) ConcreteHandler(具体处理者)判断请求选择性处理或者转发给后继(3) Client(客户类)在客户类中用set方法配置处理者的后继形成职责链3. 纯的职责链具体处理者对象只能承担责任或者把责任给下家4. 不纯的职责链具体处理者对象可以承担一部分责任又将责任给下家,或者随时中断对事

2022-06-16 18:48:34 87

原创 【设计模式】代理模式(Proxy Pattern)

1. 模式结构 2. 角色(1) Subject(抽象主题角色)(2) Proxy(代理主题角色)(3) RealSubject(真实主题角色)3. 常见代理模式远程代理:将网络的细节隐藏起来,客户完全可以认为被代理的远程业务对象是局域的而不是远程的虚拟代理: 内存节省技术,占用大量内存或处理复杂的对象将推迟到使用它的时候才创建动态代理:对于多个真实的主题角色,只需要提供一个动态代理类,动态代理类无须维护一个与真实主题角色的引用Copy-o

2022-06-16 18:46:07 51

原创 【设计模式】享元模式(Flyweight Pattern)

1. 模式结构 2. 角色(1) Flyweight(抽象享元类)规定享元类的公共方法,比如提供享元的內部状态,设置享元的外部状态(2) ConcreteFlyweight(具体享元类)intrinsicState内部状态:成员变量,不随环境改变而改变,可以共享extrinsicState外部状态:局部变量,随环境改变而改变,不可以共享模式中可以有多个具体享元类(3) UnsharedConcreteFlyweight(非共享具体享元类)可以省略不被共享,

2022-06-16 18:45:06 120

原创 【设计模式】外观模式(Facade Pattern)

1. 模式结构 2. 角色(1) Façade(外观角色)外观角色知道相关的子系统的功能和责任(2) SubSystem(子系统角色)子系统不知道外观的存在,对于子系统而言,外观仅仅是另一个客户端而已3. 扩展一般将外观类设计为单例类引入抽象外观类,使得再不修改原有具体外观类的情况下增加新的具体外观类实现新业务不要通过继承一个外观类在子系统中加入新行为,新的行为的增加应该通过修改原有子系统或增加新的子系统类来实现4. 特点对象结构型模式为子系统们

2022-06-16 18:43:24 84

原创 【设计模式】装饰模式(Decorator Pattern)

1. 模式结构 2. 角色(1) Component(抽象构件)为具体构件类和抽象装饰类的共同父类(2) ConcreteComponent(具体构件)具体构件对象,后续由装饰类为其添加方法(3) Decorator(抽象装饰类)实现类,等价于聚合版的具体构件在此类中通过set方法或者构造方法对构件进行聚合用聚合的方式模拟对构件的继承(4) ConcreteDecorator(具体装饰类)继承抽象装饰类,在此类中添加新的方法完成对构件的装饰3.

2022-06-16 18:41:59 58

原创 【设计模式】组合模式(Composite Pattern)

1. 模式结构 2. 角色(1) Component(抽象构件)可以是接口或抽象类为叶子构建和容器构建对象声明接口(2) Leaf(叶子构件)对于从Component继承/实现得到访问及管理子构件的方法可以通过异常等方法进行处理(3) Composite(容器构件)容器节点包含子节点,其子节点可以是叶子节点,也可以是容器节点提供一个集合用于存储子节点在其业务方法中可以递归调用其子节点的业务方法(4) Client(客户类)调用抽象构件3.

2022-06-16 18:40:08 38

原创 【设计模式】桥接模式(Bridge Pattern)

1. 模式结构 2. 角色(1) Abstraction(抽象类)主体,通常聚合Implementor,通过set方法设置具体Implementor对象(2) RefinedAbstraction(扩充抽象类)主体的具体实现(3) Implementor(实现类接口)客体接口(4) ConcreteImplementor(具体实现类)客体的具体实现3. 特点通过在抽象层主体聚合客体实现两个继承体系的自由组合,即桥接4. 扩展配合适配

2022-06-14 12:45:20 67

原创 【设计模式】适配器模式(Adapter Pattern)

1. 模式结构 2. 角色(1) Target(目标抽象类)(2) Adapter(适配器类)(3) Adaptee(适配者类)(4) Client(客户类)3. 类适配器适配器类和被适配类是继承关系4. 对象适配器适配器类和被适配类是关联关系(适配器类中有被适配器类的对象)优点:可以同时适配多个被适配类缺点:想要置换被适配类的方法要嵌套类适配器5. 变种(1) 缺省适配器模式场景:子类不需要实现接口全部方法时角色:

2022-06-14 12:44:27 59

原创 【设计模式】 单例模式(Singleton Pattern)

1. 模式结构 2. 饿汉式单例类加载的时候就已经创建了单例对象 3. 懒汉式单例第一次引用的时候将自己实例化,实例化时用synchronized以处理多线程环境4. 应用Spring框架中的bean工厂默认以单例模式创建bean...

2022-06-14 12:42:58 41

原创 【设计模式】原型模式(Prototype Pattern)

1. 模式结构 2. 角色(1) Prototype(抽象原型类)即Java中的Object类(2) ConcretePrototype(具体原型类)Java中所有的类(都继承自Object类)(3) Client(客户类)调用者,在该类中调用对象的克隆方法3. 浅克隆仅仅复制所考虑的对象,而不复制它所引用的成员对象Java原生实现原型模式,直接使用Object提供的clone()方法来实现对象的浅克隆实现克隆的类必须先实现一个标识接口Clonea

2022-06-14 12:40:17 57

原创 【设计模式】建造者模式(Builder Pattern)

1. 模式结构 2. 角色(1) Builder(抽象建造者)(2) ConcreteBuilder(具体建造者)(3) Product(产品角色)(4) Director(指挥者) 3. 特点将部件和其组装过程分开,一步一步创建一个复杂对象用户只需要指定复杂的对象的类型就可以得到该对象,而无须知道其内部的具体构造细节4. 变种(1) 省略抽象建造者角色如果系统中只需要一个具体建造者的话,可以省略抽象建造者(2) 省略指挥

2022-06-14 12:39:15 54

原创 【设计模式】抽象工厂模式(Abstract Factory Pattern)

1. 模式结构 2. 角色(1) Factory(抽象工厂角色)(2) ConcreteFactory(具体工厂角色)(3) Product(抽象产品角色)(4) ConcreteProduct(具体产品角色)3. 特点工厂方法模式的升级版一个工厂可以生产多个产品...

2022-06-14 12:37:04 43

原创 【设计模式】工厂方法模式(Factory Method Pattern)

1. 模式结构 2. 角色(1) Factory(抽象工厂角色)(2) ConcreteFactory(具体工厂角色)提供静态工厂方法produce(),返回抽象产品类Product(3) Product(抽象产品角色)(4) ConcreteProduct(具体产品角色)3. 特点简单工厂模式的升级版,工厂也抽象工厂不根据参数生产产品,一个工厂只生产一个产品...

2022-06-14 12:33:22 42

原创 【设计模式】简单工厂模式(静态工厂模式)

(一) 简单工厂模式(静态工厂模式)1. 模式结构 2. 角色(1) Factory(工厂角色)提供静态工厂方法produce(参数),返回抽象产品类Product(2) Product(抽象产品角色)(3) ConcreteProduct(具体产品角色)3. 特点不属于GoF的23种设计模式最简单的工厂模式抽象的产品具体的工厂工厂根据参数生产产品.........

2022-06-14 12:29:32 99

原创 【设计模式】 面向对象设计原则

面向对象设计原则

2022-06-14 12:27:27 38

原创 【设计模式】类图

设计模式类图

2022-06-14 11:58:57 58 1

【设计模式】各个设计模式的UML类图

【设计模式】各个设计模式的UML类图

2022-06-14

空空如也

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

TA关注的人

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