设计模式的三大类 创建型模式(Creational Pattern):对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。

(5种)工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式

记忆口诀:创工原单建抽(创公园,但见愁) 结构型模式(Structural Pattern):关注于对象的组成以及对象之间的依赖关系,描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。

(7种)适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式

记忆口诀:结享外组适代装桥(姐想外租,世代装桥) 行为型模式(Behavioral Pattern):关注于对象的行为问题,是对在不同的对象之间划分责任和算法的抽象化;不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。

(11种)策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式

记忆口诀:行状责中模访解备观策命迭(形状折中模仿,戒备观测鸣笛)

创建型模式

简单工厂模式

简单工厂模式通常就是这样,一个工厂类 XxxFactory,里面有一个静态方法,根据我们不同的参数,返回不同的派生自同一个父类(或实现同一接口)的实例对象。

工厂模式

核心在于,我们需要在第一步选好我们需要的工厂。比如,我们有 LogFactory 接口,实现类有 FileLogFactory 和 KafkaLogFactory,分别对应将日志写入文件和写入 Kafka 中,显然,我们客户端第一步就需要决定到底要实例化 FileLogFactory 还是 KafkaLogFactory,这将决定之后的所有的操作。

抽象工厂模式

单例模式

建造者模式

核心是:先把所有的属性都设置给 Builder,然后 build() 方法的时候,将这些属性复制给实际产生的对象。

原型模式

原型模式很简单:有一个原型实例,基于这个原型实例产生新的实例,也就是“克隆”了。

Object 类中有一个 clone() 方法,它用于生成一个新的对象,当然,如果我们要调用这个方法,java 要求我们的类必须先实现 Cloneable 接口,
此接口没有定义任何方法,但是不这么做的话,在 clone() 的时候,会抛出 CloneNotSupportedException 异常。    

创建型模式总结

创建型模式总体上比较简单,它们的作用就是为了产生实例对象,算是各种工作的第一步了,因为我们写的是面向对象的代码,所以我们第一步当然是需要创建一个对象了。

简单工厂模式最简单;工厂模式在简单工厂模式的基础上增加了选择工厂的维度,需要第一步选择合适的工厂;抽象工厂模式有产品族的概念,如果各个产品是存在兼容性问题的,就要用抽象工厂模式。

单例模式就不说了,为了保证全局使用的是同一对象,一方面是安全性考虑,一方面是为了节省资源;建造者模式专门对付属性很多的那种类,为了让代码更优美;原型模式用得最少,了解和 Object 类中的 clone() 方法相关的知识即可。

结构型模式

代理模式

代理模式是最常使用的模式之一了,用一个代理来隐藏具体实现类的实现细节,通常还用于在真实的实现的前后添加一部分逻辑。

既然说是代理,那就要对客户端隐藏真实实现,由代理来负责客户端的所有请求。当然,代理只是个代理,它不会完成实际的业务逻辑,而是一层皮而已,但是对于客户端来说,它必须表现得就是客户端需要的真实实现。

适配器模式

适配器模式做的就是,有一个接口需要实现,但是我们现成的对象都不满足,需要加一层适配器来进行适配。

适配器模式总体来说分三种:默认适配器模式、对象适配器模式、类适配器模式

适配器模式总结
    类适配和对象适配的异同

        一个采用继承,一个采用组合;
        类适配属于静态实现,对象适配属于组合的动态实现,对象适配需要多实例化一个对象。
        总体来说,对象适配用得比较多。

    适配器模式和代理模式的异同
        比较这两种模式,其实是比较对象适配器模式和代理模式,在代码结构上,它们很相似,都需要一个具体的实现类的实例。但是它们的目的不一样,
        代理模式做的是增强原方法的活;适配器做的是适配的活,为的是提供“把鸡包装成鸭,然后当做鸭来使用”,而鸡和鸭它们之间原本没有继承关系。

桥梁模式

装饰模式

门面模式

组合模式

享元模式

结构型模式总结 前面,我们说了代理模式、适配器模式、桥梁模式、装饰模式、门面模式、组合模式和享元模式。读者是否可以分别把这几个模式说清楚了呢?在说到这些模式的时候,心中是否有一个清晰的图或处理流程在脑海里呢?

代理模式是做方法增强的,适配器模式是把鸡包装成鸭这种用来适配接口的,桥梁模式做到了很好的解耦,装饰模式从名字上就看得出来,适合于装饰类或者说是增强类的场景,门面模式的优点是客户端不需要关心实例化过程,只要调用需要的方法即可,组合模式用于描述具有层次结构的数据,享元模式是为了在特定的场景中缓存已经创建的对象,用于提高性能。

行为型模式

策略模式

观察者模式

责任链模式

模板方法模式

状态模式

行为型模式总结 行为型模式部分介绍了策略模式、观察者模式、责任链模式、模板方法模式和状态模式,其实,经典的行为型模式还包括备忘录模式、命令模式等

各分类中模式的关键点

创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。
5种)工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式
    记忆口诀:创工原单建抽(创公园,但见愁)

    单例模式:某个类只能有一个实例,提供一个全局的访问点。         单例模式(Singleton Pattern)
    简单工厂:一个工厂类根据传入的参量决定创建出那一种产品类的实例。    工厂模式(Factory Pattern)
    工厂方法:定义一个创建对象的接口,让子类决定实例化那个类。
    抽象工厂:创建相关或依赖对象的家族,而无需明确指定具体类。       抽象工厂模式(Abstract Factory Pattern)
    建造者模式:封装一个复杂对象的构建过程,并可以按步骤构造。       建造者模式(Builder Pattern)
    原型模式:通过复制现有的实例来创建新的实例。          原型模式(Prototype Pattern)

     
结构型模式:把类或对象结合在一起形成一个更大的结构。
(7种)适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式
        记忆口诀:结享外组适代装桥(姐想外租,世代装桥)

    适配器模式:将一个类的方法接口转换成客户希望的另外一个接口。      适配器模式(Adapter Pattern)
    组合模式:将对象组合成树形结构以表示“”部分-整体“”的层次结构。       组合模式(Composite Pattern)
    装饰模式:动态的给对象添加新的功能。                              装饰器模式(Decorator Pattern)
    代理模式:为其他对象提供一个代理以便控制这个对象的访问。            代理模式(Proxy Pattern)
    亨元(蝇量)模式:通过共享技术来有效的支持大量细粒度的对象。          享元模式(Flyweight Pattern)
    外观模式:对外提供一个统一的方法,来访问子系统中的一群接口。          外观模式(Facade Pattern)
    桥接模式:将抽象部分和它的实现部分分离,使它们都可以独立的变化。        桥接(Bridge)

     
行为型模式:类和对象如何交互,及划分责任和算法。
    (11种)策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
        记忆口诀:行状责中模访解备观策命迭(形状折中模仿,戒备观测鸣笛)

    模板模式:定义一个算法结构,而将一些步骤延迟到子类实现。                模板模式(Template Pattern)
    解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器。      解释器模式(Interpreter Pattern)
    策略模式:定义一系列算法,把他们封装起来,并且使它们可以相互替换。       策略模式(Strategy Pattern)
    状态模式:允许一个对象在其对象内部状态改变时改变它的行为。               状态模式(State Pattern)
    观察者模式:对象间的一对多的依赖关系。                                 观察者模式(Observer Pattern)
    备忘录模式:在不破坏封装的前提下,保持对象的内部状态。                 备忘录模式(Memento Pattern)
    中介者模式:用一个中介对象来封装一系列的对象交互。               中介者模式(Mediator Pattern)
    命令模式:将命令请求封装为一个对象,使得可以用不同的请求来进行参数化。         命令模式(Command Pattern)
    访问者模式:在不改变数据结构的前提下,增加作用于一组对象元素的新功能。         访问者模式(Visitor Pattern)
    责任链模式:将请求的发送者和接收者解耦,使的多个对象都有处理这个请求的机会。      责任链模式(Chain of Responsibility Pattern)
    迭代器模式:一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构。       迭代器模式(Iterator Pattern)

应用层: http协议:超文本传输协议, TCP 端口号80, 常用的还有8080、8081、9080

https:443/tcp 443/udp

SOCKS: 代理协议, 常用端口号8080

FTP:文件传输协议 20 数据传输 21 控制指令传输,选用TCP连接

telnet:远程登录,常用端口号23/tcp

SSH 安全登录 SCP 文件传输,默认端口22/tcp

DHCP:动态主机配置协议,服务器是67,客户机是68

POP3:接收协议 端口TCP 110)

DNS:域名系统 UDP 53)

1-1024是众所周知的端口。1025-65535是动态端口

TCP 1863端口:MSN Messenger的文件传输功能所使用的端口 TCP 5000端口:DB2 UDP 8000端口:腾讯QQ 0保留端口

mysql默认端口是3306 sqlserver默认端口是1433 TCP 1521端口:Oracle数据库服务 上面三层是定义应用程序的功能