1、原型设计模式
用于创建重复的对象,同时又能保证性能。
浅拷贝:对于值类型,直接复制,不会开辟新的值类型的值。对于引用类型,直接引用其地址,不会创建新的对象。
深拷贝:值类型和引用类型都是直接创建—个新的值或对象。
2、建造者设计模式
建造者模式,是将一个复杂对象的构建和它的表示分离,使得同样的构建过程,可以创建不同的表示。
AbstractBuilder(抽象建造者)
为创建一个产品对象的各个部件指定抽象接口,在该接口或者抽象类中,一般提供两种方法,第一种就是各个组件的创建方法,
另一类方法是对象返回方法,用于将构建完成的对象返回。
ConcreteBuilder(具体建造者)
具体建造者实现或者继承抽象建造者,实现各个组件的创建方法和对象方法的方法。
Product()
被构建的复杂对象,包含多个组件。
Director(指挥者)
指挥者负责安排复杂对象的建造顺序
3、适配器模式
适配器模式,将一个类的接口,转换成客户希望的另外一个接口。
Adaptee:初始角色,实现了我们想要的功能,但是接口不匹配
Target:目标角色,定义了用户希望的的接口。
Adapter:适配器角色,实现了目标接口。实现的方法是,内部包含了一个Adaptee对象,通过调用Adaptee对象原有的方法实现功能。
4、装饰器设计模式
装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
5、代理设计模式
6、外观设计模式
外观模式:隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的统一接口,这个统一接口组合了子系统的多个接口。使得子系统更容易被访问和使用。
7、桥接设计模式
桥接设计模式:将抽象部分与它的实现部分分离,使他们都可以独立的变化。
8、组合设计模式
组合设计模式:你可以使用它将对象组合成树状结构,并且能像使用独立对象一样使用他们。
Component
组合模式的根节点,可以是接口、抽象类、普通类,该类定义了子类中所有共性的内容,并且还定义了用于访问和管理子类的方法。
Leaf
组合中的叶子节点,也就是最末端的节点,该节点下,不会再有子节点
Composite
非叶子节点,它的作用是存储子部件,并且在Composite中实现了对子部件的相关操作。
9、享元设计模式
当系统中大量使用某些相同或者相似的对象,这些对象会消耗大量的资源,并且这些对象剔除外部状态后可以通过同一个对象来替代
内部状态:对象内部不受环境改变的部分作为内部状态。
外部状态:随着环境的变化而变化的部分。