java设计模式
文章目录1. 设计模式分类2. 创建型模式1单例模式2原型模式3工厂模式4抽象工厂模式5建造者模式3. 结构型模式1适配器模式2桥接模式3组合模式4装饰者模式5外观模式6享元模式7代理模式4. 行为型模式1迭代器模式2解释器模式3观察者模式4中介者模式5访问者模式6备忘录模式7状态模式8策略模式9命令模式10模板方法模式11责任链模式5. 设计模式的原则1单一职责原则2开闭原则3里氏替换原则4接口隔离原则5依赖倒置原则6迪米特法则(最少知识原则)7合成复用原则1. 设计模式分类设计模式一共有23种 创建型模式5种核心目标解耦对象创建的过程。 结构型模式7种核心目标优化对象与类的组合结构。 行为型模式11种核心目标优化对象间的通信与职责分配。2. 创建型模式1单例模式1. 目标保证一个类只有一个实例并提供一个访问它的全局访问点。 2. 场景数据库连接池、配置管理。 3. 类型写法8种 1饿汉式--静态常量 2饿汉式--静态代码块 3懒汉式--线程不安全 4懒汉式--同步方法(线程安全) 5懒汉式--同步代码块(线程安全) 6双重检查 7静态内部类 8枚举2原型模式1. 目标给出个原型通过复制创建更多同类型的对象。3工厂模式特点一个接口有多个实现通过工厂来创建出需要的实现。 目标将对象创建延迟到子类避免客户端直接依赖具体类。 场景需要根据不同的条件动态创建不同的对象。4抽象工厂模式目标创建一组相关或依赖的对象族。 场景跨平台 UI 组件库如不同操作系统的按钮、文本框。5建造者模式目标使用多个简单的对象一步步的构建成一个复杂的对象避免构造器参数爆炸。 场景创建包含多个可选参数的对象如订单、配置。3. 结构型模式1适配器模式目标通过使用适配器重写目标接口将一个类的某个接口(目标接口)转换成客户希望的另外一个接口类似于 数据转化功能将不兼容的接口转换为客户端期望的接口。 场景整合第三方库或遗留代码。2桥接模式特点将抽象部分和实现部分分离使他们都可以独立的变化把两个角色之间的继承关系变成了耦合关系。3组合模式4装饰者模式特点对已有的业务逻辑进行一定的封装在不改变原有结构的前提下增加一些其他新的功能。 目标动态的为对象添加职责避免子类膨胀。 场景Java I/O 流如 BufferedInputStream 装饰 FileInputStream。5外观模式6享元模式特点以共享的模式来避免相同内容对象的开销。7代理模式特点创建一个代理对象和实际对象一样去实现某个接口并在代理对象类中引用实际对象去实现某些功能也可对原有的功能进行增强。 目标控制对对象的访问延迟加载、权限控制等或者添加某些功能。 场景Spring AOP 动态代理、远程方法调用RMI。4. 行为型模式1迭代器模式特点使用迭代器顺序访问集合中的每一个元素不需要知道集合对象的底层展示。2解释器模式3观察者模式特点定义了一种一对多的依赖关系让多个观察者同时监听某一个主题对象当这个主题对象的状态发生变化时会通知所有的观察者对象使他们能够自动更新自己。4中介者模式5访问者模式6备忘录模式特点用来存储另外一个对象内部状态的快照的对象。7状态模式特点允许一个对象在其内部状态变化时改变其行为。8策略模式特点将多个算法封装到具有共同接口的多个实现类中使得一个接口可以实现不同的功能类似于一个接口的多个不同实现。 场景支付方式选择支付宝、微信、银行卡。9命令模式特点将一个命令封装成一个对象可以对命令接受者进行不同的命令处理。10模板方法模式目标定义算法骨架允许子类重写某些步骤。 场景Servlet 生命周期init(), service(), destroy()。11责任链模式5. 设计模式的原则1单一职责原则一个类只负责一个功能。2开闭原则对扩展开发对修改关闭。3里氏替换原则任何基类可以出现的地方子类一定也可以出现。 子类应能替换父类且不影响程序逻辑。4接口隔离原则使用多个隔离的接口比使用一个接口要好。 客户端不应依赖它不需要的接口。5依赖倒置原则应该针对接口编程依赖于抽象而不依赖于具体。6迪米特法则(最少知识原则)一个实体应该尽量少的与其他实体发生相互作用。7合成复用原则尽量使用合成、聚合而不是使用继承。