![](https://img-blog.csdnimg.cn/direct/68e99a4e3df04fea8398ad5e1f9058b9.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 80
谈一谈对设计模式的理解
码龄开花21
这个作者很懒,什么都没留下…
展开
-
设计模式——开闭、单一职责及里氏替换原则
在这些示例中,我们遵循了单一职责原则,为不同的功能创建了不同的类;遵循了里氏替换原则,确保子类可以替换其基类,而不影响程序的正确性。开闭原则由Bertrand Meyer提出,强调软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。它指出,子类对象必须能够替换其基类对象,而不影响程序的正确性。这意味着子类应该能够扩展基类的功能,而不是改变基类的行为。单一职责原则由Robert C. Martin提出,主张一个类应该只有一个引起它变化的原因。这有助于减少类之间的耦合,提高代码的可维护性。原创 2024-07-01 18:27:44 · 927 阅读 · 0 评论 -
设计模式——依赖倒置、接口隔离、合成复用原则
依赖倒置原则指出高层模块不应依赖于低层模块,二者都应该依赖于抽象(接口或抽象类)。抽象不应依赖于细节,细节应依赖于抽象。接口隔离原则主张不应该强迫客户依赖于它们不使用的方法。一个类对一个接口的依赖应该尽可能少。// 组合基本功能和增强功能。合成复用原则提倡优先使用对象的组合,而不是通过继承来复用代码。// 现在我们可以根据不同的需求实现不同的接口。原创 2024-07-01 18:30:01 · 1009 阅读 · 0 评论 -
设计模式——迪米特法则
如果我们让Person类直接访问City的name属性,就像注释掉的getCityName()方法那样,就违反了迪米特法则,因为Person类不应该关心City类内部是如何实现的。根据迪米特法则,Person类应该直接访问它的Address属性,但是不应该访问City属性的属性或方法,除非City是作为参数传入的。遵循迪米特法则可以帮助我们创建松耦合的代码,使得每个类都只关注自己的职责,而不是其他类的内部实现细节。迪米特法则的目的是减少类之间的耦合,使得单元测试更加容易,并且提高代码的可维护性。原创 2024-07-01 18:31:40 · 265 阅读 · 0 评论 -
设计模式-创建型模式 (工厂方法、抽象工厂及单例模式 建造者与原型模式)
建造者模式用于创建一个复杂的对象,同时允许用户只通过指定复杂对象的类型和内容就能构建它们,隐藏了内部的构建细节。工厂方法模式定义了一个创建对象的接口,让子类决定实例化哪一个类。每种模式都有其特定的使用场景,选择正确的模式可以提高代码的可读性、可维护性和灵活性。System.out.println(“使用ConcreteProductA”);抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。原型模式使用已有实例指定创建对象的种类,并通过复制这些实例来创建新的对象。原创 2024-07-01 18:35:01 · 564 阅读 · 0 评论 -
设计模式——结构型模式(适配器、装饰器及代理模式 外观、桥接、组合及享元模式)
System.out.println(“适配者类的特殊方法被调用”);组合模式允许将对象组合成树形结构,以表示“部分-整体”的层次结构。System.out.println(“具体实现A的操作”);System.out.println(“具体构件的方法”);System.out.println(“真实主题的请求”);System.out.println(“子系统A的操作”);System.out.println(“子系统B的操作”);System.out.println(“叶节点的操作”);原创 2024-07-01 18:39:18 · 982 阅读 · 0 评论 -
设计模式——行为型模式
行为型模式主要关注对象间的通信,它们提供了一种方法来定义对象之间的相互作用,以及怎样分配责任。观察者模式定义了对象之间的一对多依赖关系,当一个对象状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。System.out.println(“收到消息:” + message);System.out.println(“观察者被通知”);System.out.println(“执行操作”);System.out.println(“算法A”);System.out.println(“算法B”);原创 2024-07-01 18:48:28 · 677 阅读 · 0 评论 -
设计模式对比及应用场景
每种设计模式都有其特定的使用场景和特点,合理选择和应用设计模式可以提高代码的可读性、可维护性和灵活性。特点:定义对象间的一对多依赖关系,当对象状态改变时,所有依赖它的对象都会得到通知。应用场景:需要固定算法骨架,同时允许子类定制某些步骤,如JdbcTemplate。System.out.println("执行SQL: " + sql);应用场景:算法动态切换,如排序算法、优惠促销策略等。特点:定义一系列可互换的算法,可动态更改对象的行为。特点:在方法中定义算法骨架,延迟一些步骤的实现。原创 2024-07-01 18:53:31 · 731 阅读 · 0 评论