设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
设计模式的六大原则:
开闭原则:总纲,对扩展开放,对修改关闭。
单一原则:实现类的职责要单一,即一个类只负责一个功能领域中的相应职责。用来控制类粒度的大小。
里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能。
依赖倒置原则:面向接口的编程,依赖于抽象而不依赖于具体。
接口隔离原则:每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。提高类的内聚性、降低它们之间的耦合性,体现了封装的思想。
迪米特法则:一个类对自己依赖的类知道的越少越好。无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部,通过public方法提供给外部。目的是为了降低耦合度。
合成复用原则:多用组合或者聚合,少用继承。
创建型模式的特点:将对象的创建与使用分离,降低系统的耦合度。
单例(Singleton)模式:某个类只生成一个实例,该类提供了一个全局访问点,供外部访问访问获取实例。
优点:在内存中只有一个对象,节省内存空间。
避免频繁的创建销毁对象,可以提高性能。
避免对共享资源的多重占用。
可以全局访问。
应用:java.lang.Runtime;jdbc连接数据库
原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。
应用: java.lang.Object.clone()
深拷贝与浅拷贝. 浅拷贝:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。
深拷贝:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。一般使用序列化,将对象写入到流中,这样对象的内容就变成了字节流,也就不存在什么引用了。然后读取字节流反序列化为对象就完成了完全的复 制。
工厂方法(FactoryMethod)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。
应用:java.lang.Object#toString() (在其子类中可以覆盖该方法)
java.lang.Class#newInstance()
java.lang.Integer#valueOf(String) (Boolean, Byte, Character,Short, Long, Float 和 Double与之类似)
java.lang.Class#forName()
java.lang.reflect.Array#newInstance()
java.lang.reflect.Constructor#newInstance()
抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。
建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。
java.lang.StringBuilder#append()
java.lang.StringBuffer#append()
结构型模式:
行为型模式:
原文:https://www.cnblogs.com/wujianzhou/p/11487695.html