首页 > 其他分享 >面向对象的设计模式

面向对象的设计模式

时间:2023-07-27 14:23:27浏览次数:35  
标签:职责 代码 接口 面向对象 模式 模块 设计模式 客户端

SOLID设计原则(面向对象)

一句话归纳 目的
单一职责 一个类或模块应该只有一个引起它变化的原因。 一个类或模块应该只有一个主要职责,这样可以使代码更加清晰、易于理解和维护。
开闭原则 软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。 强调在添加新功能时不需要修改现有代码,只需通过扩展已有代码来实现。使系统更加稳定、灵活而且易于扩展。
里氏替换 子类型必须能够替换掉它们的父类型。 在使用继承时,子类应该能够完全替代父类的行为,而不会引发意料之外的错误或破坏系统的正确性。
接口隔离 客户端不应该依赖它不需要的接口。 将大而全的接口拆分为多个小而精确的接口,以避免强迫客户端实现它们不需要的方法一个类或模块应该只有一个主要职责,这样可以使代码更加清晰、易于理解和维护。
依赖倒置 高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。 通过抽象来解耦高层和低层模块之间的依赖关系,提高代码的松耦合性和可测试性。

单一职责原则与接口隔离原则之间的异同

相似之处:

都是SOLID原则中的一部分,旨在帮助设计出高内聚、低耦合的代码。

都强调将一个类或接口的职责划分得更细致、更专注,以提高代码的可维护性、可扩展性和可重用性。

不同之处:

单一职责原则(SRP)关注于类或模块的职责划分,强调一个类或模块应该只有一个引起它变化的原因。它要求一个类或模块应该只有一个主要职责,这样可以使代码更加清晰、易于理解和维护。SRP强调的是类或模块内部的职责划分。

接口隔离原则(ISP)关注于接口的职责划分,强调客户端不应该依赖它不需要的接口。它要求将大而全的接口拆分为多个小而精确的接口,以避免强迫客户端实现它们不需要的方法。ISP强调的是接口之间的职责划分。

总结: 单一职责原则和接口隔离原则是两个不同的设计原则,它们各自关注的方面略有差异。SRP关注类或模块内部的职责划分,提倡一个类或模块只有一个主要职责。ISP关注接口的职责划分,强调将大接口拆分为小接口,避免客户端依赖不需要的方法。虽然它们有相似之处,但它们在不同的层面上帮助我们设计出更好的代码结构。同时,遵循这两个原则可以提高代码的可维护性、可扩展性和可重用性。

设计模式

  • 创建型模式(Creational Patterns):包括单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)等。

  • 结构型模式(Structural Patterns):包括适配器模式(Adapter)、桥接模式(Bridge)、装饰器模式(Decorator)、外观模式(Facade)和代理模式(Proxy)等。

  • 行为型模式(Behavioral Patterns):包括观察者模式(Observer)、迭代器模式(Iterator)、策略模式(Strategy)、命令模式(Command)和模板方法模式(Template Method)等。

外观模式 建造者模式 和 模板方法模式之间的异同

相似之处:

都属于GOF设计模式中的创建型模式。

都提供了一种将创建过程进行抽象和封装的方法,以便于简化代码和提高可维护性。

都关注对象的创建和初始化过程,以及如何组织和管理对象的结构。

不同之处:

目的和使用场景不同:

    外观模式(Facade Pattern)的目的是为了提供一个统一的接口,隐藏系统的复杂性,简化客户端与子系统之间的交互。它主要用于简化接口调用,提供一个高层次的接口,方便客户端使用。

    建造者模式(Builder Pattern)的目的是将一个复杂对象的构建过程和表示分离,使得同样的构建过程可以创建不同的表示。它主要用于创建复杂对象,将对象的创建步骤进行组合,以便于灵活构建不同的对象。

    模板方法模式(Template Method Pattern)的目的是定义一个算法的骨架,将一些步骤延迟到子类实现。它主要用于定义算法的框架,将变化的部分交给子类实现。

参与角色和关系不同:

    外观模式中,外观类(Facade)提供了一个统一的接口,客户端通过调用外观类来访问子系统的功能。

    建造者模式中,建造者类(Builder)负责创建产品的各个部分,并提供获取最终产品的方法,指导者类(Director)负责调用建造者的方法来创建产品。

    模板方法模式中,抽象类(AbstractClass)定义一个模板方法,该方法包含了算法的骨架,还可以包含一些具体方法和钩子方法,具体的子类(ConcreteClass)实现这些具体方法和钩子方法。

关注点不同:

    外观模式关注于简化接口调用,提供一个高层次的接口,隐藏系统的复杂性。

    建造者模式关注于创建复杂对象,将对象的构建过程和表示分离,以便于灵活构建不同的对象。

    模板方法模式关注于定义算法的框架,将变化的部分交给子类实现,保持算法的结构稳定。

总结: 外观模式、建造者模式和模板方法模式都是通过封装和抽象来简化对象的创建和使用。它们各自关注于不同的方面,解决不同的问题,并在不同的场景中有不同的应用。适用于不同的情况下选择合适的设计模式可以提高代码的可维护性和可扩展性。

标签:职责,代码,接口,面向对象,模式,模块,设计模式,客户端
From: https://www.cnblogs.com/dewan/p/17584798.html

相关文章

  • python设计模式运用
    工厂+策略+注册classVideoFactory(object):def__init__(self):self.video={}defregister_video(self,name,video):self.video[name]=videodefcreate_video(self,name):ifnameinself.video:returnself.v......
  • 设计模式(1)-单例模式
    单例模式饿汉式懒汉式懒汉双加锁静态内部类C#特有写法破坏单例定义:有且仅有一个实例,节省资源。构造函数私有化静态只读私有字段静态公开的获取私有字段的方法饿汉式publicclassHungryMan{//构造函数私有化privateHungryMan(){}//静态只读私有字段......
  • 23种设计模式介绍
    面向对象23种设计模式设计模式的分类按意图分类接口型模式职责型模式构造型模式操作型模式扩展型模式意图模式接口型模式适配器模式、外观模式、合成模式、桥接模式职责型模式代理模式,享元模式、单例模式、观察者模式、调停者模式、职责链模式构造型模......
  • 设计模式-职责链模式在Java中使用示例-采购审批系统
    场景采购单分级审批采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开董事会......
  • .NET(C#) 设计模式
    .NET(C#)设计模式简介设计模式(Designpattern)是代码设计经验的总结。设计模式主要分三个类型:创建型、结构型和行为型。创建型是对象实例化的模式,创建型模式用于解耦对象的实例化过程,主要用于创建对象。结构型是把类或对象结合在一起形成一个更大的结构,主要用于优化不同类、对......
  • 设计模式—享元模式
    享元模式享元模式(FlyweightPattern)是池技术的重要实现方式,其定义如下:Usesharingtosupportlargenumbersoffine-grainedobjectsefficiently.(使用共享对象可有效地支持大量的细粒度的对象。)优点与缺点享元模式是一个非常简单的模式,它可以大大减少应用程序创建的对象,降......
  • 设计模式—组合模式
    组合模式目录组合模式优点缺点使用场景注意事项例子组合模式(CompositePattern)也叫合成模式,有时又叫做部分-整体模式(Part-Whole),主要是用来描述部分与整体的关系。将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。优点......
  • 设计模式—状态模式
    状态模式目录状态模式优点缺点适用场景注意事项通用类图例子状态模式与策略模式的差异当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。状态模式的核心是封装,状态的变更引起了行为的变更,从外部看起来就好像这个对象对应的类发生了改变一样。优点结构清......
  • 设计模式—中介者模式
    中介者模式目录中介者模式优点缺点适用场景中介者模式与外观模式差异用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。优点减少类之间的依赖,将原有的一对多的依赖变成一对一的依赖,同事类只依赖中......
  • 设计模式—单例模式
    目录优点缺点使用场景注意事项案例分析定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。优点由于单例模式在内存中只有一个实例,减少了内存开支,特别是一个对象需要频繁地创建、销毁时,而且创建或销毁时性能又无法优化,单例模式的优势就非常明显。由......