常见的23种设计模式

1 Iterator迭代器模式 **

从集合中一个一个取出元素进行遍历,但是并没有在Iterator接口中声明对取出的元素进行何种处理。
角色
Iterator ConcreteIterator Aggregate ConcreteAggreate

2 Adapter适配器模式**

用于填补不同接口的两个类之间的缝隙。(使用继承或委托来实现)

  1. 类适配器模式
  2. 对象适配器模式
    角色:
    Target(对象) Client(请求者) Adaptee(被适配) Adapter
    一种继承加实现接口 一种继承加组合
    在这里插入图片描述优点:兼容性好,软件易维护

3 Template Method模板方法模式**

在父类定义处理流程的框架,在子类中实现具体处理
角色:
AbstractClass ConcreteClass
在这里插入图片描述

==优点:==逻辑处理通用化,遵守里氏替换原则

4 Factory Method工厂方法模式**

用Template Method模式来构建生成实例的工厂,父类决定实例的生成方式,但并不决定所要生成的具体的类,具体的处理全部交给子类负责
在这里插入图片描述
角色:Product Craetor ConcreteProduct ConcreteCreator

5 Singleton单例模式**

确保只生成一个实例的模式(饿汉式、懒汉式),Singleton的类的构造函数是private,为了禁止从Singleton类外部调用构造函数。
饿汉式:线程安全,加载类的时候就创建了对象

public class Singleton{
	private static Singleton singleton=new Singleton();
	private Singleton(){

	}
	public static Singleton getInstance(){
	return singleton;
	}
}

懒汉式:非线程安全,需要的时候才会创建对象

public class Singleton{
	private static Singleton singleton;
	private Singleton(){

	}
	public static Singleton getInstance(){
		if(singleton==null){
			singleton=new Singleton();
		}
		return singleton;
	}
}

6 Prototype原型模式

通过复制生成实例
在java中,我们一般使用new关键字指定类名来生成类的实例,但在某些特殊情况下需要根据现有的实例来生成新的实例。

  1. 对象种类繁多,无法将它们整合到一个类中时
  2. 难以根据类生成实例时
  3. 想解耦框架与生成的实例时
    Prototype原型模式的类图如下所示:
    在这里插入图片描述
    ==角色:==Prototype原型 ConcretePrototype具体的原型 Client使用者

7 Builder建造者/生成器模式

用于组装具有复杂结构的实例
角色: Builder建造者 ConcreteBuilder具体的建造者 Director监工 Client使用者
Builder模式的类图:
在这里插入图片描述
Builder模式的时序图如下:
在这里插入图片描述
在Builder模式中,Director决定了Builder角色中方法的调用顺序,而在Template method模式中,父亲决定了子类方法的调用顺序。

8 Abstract Factory抽象工厂模式**

将抽象零件组装成抽象产品。不关心零件的具体实现,只关心接口。
角色: AbstractProduct AbstractFactory Client
在这里插入图片描述
易于增加具体的工厂
难以增加新的

9 Bridge桥梁模式

将类的功能层次结构和类的实现层次结构之间搭建桥梁

10 Strategy策略模式**

可以整体替换算法的实现部分,能让我们轻松地以不同的算法解决同一个问题。

11 Composite组合模式**

能够使容器和内容具有一致性,创造出递归结构的模式

12 Decorator装饰器模式**

不断地为对象添加装饰,增加其功能的模式

13 Visitor访问者模式

数据结构与处理被分离开,编写一个访问者类来访问数据结构中的元素,并把对各元素的处理交给访问者类。当需要增加新的处理时,只需要编写新的访问者,然后让数据结构可以接受访问者的访问即可。

14 Chain of Responsibility责任链模式

将多个对象组合一条职责链,然后按照它们在职责链上的顺序一个一个地找出到底应该谁来负责处理。

15 Facade窗口/外观模式**

可以为系统提供一个简单窗口,不必单独地关注每个类

16 Mediator仲裁者/中介者模式

不让互相关联的对象之间进行任何直接通信,组员向仲裁者报告,仲裁者向组员下达指示,适合GUI应用程序。

17 Observer观察者模式**

当观察对象的状态发生变化时,会通知观察者并进行处理。

18 Memento备忘录模式

通过引入表示实例状态的角色,可以在保存和恢复实例时有效地防止对象的封装性遭到破坏。

19 State状态模式**

用类表示状态

20 Flyweight轻量级/蝇量模式

通过尽量共享实例来避免new出实例

21 Proxy代理模式**

让代理人负责完成工作。当代理人遇到无法自己解决的事情时就会去找本人解决该问题。

22 Command命令模式**

通过用对象表示“命令”来保存命令历史记录和重复执行命令的模式

23 Interpreter解释器模式

当需要解决问题发生变化时,不需要修改java语言程序,只需要修改迷你语言程序即可应对。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值