设计模式
设计模式的原则
设计模式里面有六大原则: 开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,迪米特法则,合成复用原则。
开闭原则,指的是对扩展开放但是对修改关闭,对程序进行扩展功能的时候,不能去修改原有的代码,要实现热插拔的效果。
里氏替换原则,侧重于,任何子类都是要父类的扩展,也就是任何出现父类的地方,子类一定可以出现并且完美兼容。这是对开闭原则的一个补充。
依赖倒转原则是对开闭原则的实现,中心思想是面对接口编程,而不是通过new 一个具体的对象。例如在写一个computer类的中,不能在类中实例具体的cpu 内存的型号,这样更换cpu的时候就需要去修改computer的实现,而是通过在computer中定义多个接口,这样把具体的cpu型号的实现 和computer的实现解耦,在用的时候去向下转型即可。
接口隔离原则,指的是杜预多个隔离的接口,比单个接口要好,降低类之间的耦合度,强调的是低耦合。
迪米特法则,指的是一个实体尽量少的与其他的实体发生相互作用,使得系统功能模块相对独立。也就是高内聚原则
合成复用原则,指的是优先使用组合和聚合关联关系来实现,其次才考虑使用继承关系来实现。
继承的缺点:1.父类对子类透明,父类的实现细节暴露给子类 2. 子类和父类耦合度高,父类的实现都会导致子类的改变3.从父类继承而来的实现的是静态的,在编译的时候已经定义,所以在运行时是不可能发生变化的。
设计模式的类型
创建型模式
重点关注的是怎么创建对象,使用者不需要关注创建对象的细节。
单例设计模式
饿汉式: 类加载就会导致单实例对象被创建 (容易造成内存的浪费)
1.私有构造方法 2. 在本类中创建本类对象 3.提供公共的访问方式,让外界获取该对象
懒汉式: 类加载不会导致该单实例对象被创建,而是首次使用该对象才会创建 (要注意线程安全 ,要加 synchronized 或者双重检查锁)
1.私有构造方法 2.在本类中声明该对象 3提供对外的方式,在访问的时候才会创建
静态内部类方式,类中定义一个内部类,用 final 修饰。提供外部公共的访问方式
枚举类加载模式,线程安全
工厂模式
工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。将对象的创建逻辑放在工厂类中,而不是是在客户端中直接实例化代码。
1.简单工厂模式
单独的一个工厂来创建不同的对象,根据传入的参数来决定创建哪一种类型的对象
缺点: 增加需求还是要修改工厂,违反开闭原则。
2.工厂方法模式
解决简单工厂的违反开闭原则,定义用于创建对象的接口,让子类决定实例化哪一个类对象。
主要角色: 抽象工厂,具体工厂,抽象产品,具体产品。
缺点:每增加一个产品就要增加一个具体的产品类和对应的具体工厂类,无需对原工厂进行任何的修改,满足开闭原则。

3.抽象工厂模式
抽象工厂模式指的是一个工厂的多个方法是去创建一个产品族里面的方法,同一族的不同产品。
缺点: 扩展产品的族非常困难,需要修改抽象工厂和所有具体工厂的代码
原型模式
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。
原型模式包含了如下的角色: 抽象原型类,规定 具体原型对象必须实现的 clone 方法。
浅克隆:新对象和原来对象的内存地址相同
深克隆:新对象和原来对象的内存地址不相同 序列化和反序列化
建造者模式
讲一个复杂对象的构建和表示分离,使得同样的构建可以创建不同的表示。
角色:
抽象建造者类 具体建造者类 产品类 指挥者类
结构型模式
行为型模式
- 本文作者: Wynne Yin
- 本文链接: https://wynneyin.github.io/2026/02/11/设计模式_副本/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!
