首页 > 其他分享 >设计模式

设计模式

时间:2024-01-22 12:44:52浏览次数:29  
标签:依赖 对象 子类 扩展 模式 继承 设计模式

八大原则:依开单替,接优封针

依:依赖倒置原则

高层次的代码不应该依赖低层次的代码,应该依赖抽象、抽象的代码不应该依赖具体的代码

开:开闭原则

对扩展开放,对修改关闭

单:单一职责

一个类应该仅有一个变化的原因,该变化隐含了它的职责,职责太多会造成混乱

替:替换原则

子类必须能够替换他的基类,继承可以表达类型抽象

接:接口隔离原则

接口应该小而完备,不该强迫用户使用多余的方法

优:优先使用组合而不是继承

继承通常会让子类和弗雷的耦合度增加、组合的方式只要求组件具备良好定义的接口

封:封装变化点

针:针对接口编程,而不是针对实现编程

 

一、策略模式

产生的动机:某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担,因为会失效的代码也会判断。 违背开闭原则

一般出现多种  if elseif    的时候就可以使用策略模式

一般要结合工厂模式

二、观察者模式

我们需要为某些对象建立一种“通知依赖关系”   一个对象(目标对象)的状态发生改变,所有的依赖对象都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好的抵御变化。

定义对象间的一种一对多变化的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。

使用面向对象的抽象, observer模式是的我们可以独立的改变目标与观察者,从而使二者之间的依赖关系达到松耦合。

目标发送通知时,无需指定观察者,通知会自动传播。

观察者自己决定是否需要订阅通知,目标对象对此一无所知。

 

三、 模板方法

对于某一项任务,他常常有稳定的整体操作结构

模板方式是一种非常基础性的设计模式, 在面向对象系统种有着大量的使用。他用最简洁的机制(虚函数的多态)。

在具体实现方面,被模板方法调用的虚方法可以具体实现,也可以没有任何实现,但一般会推荐把他们设置为protected方法

  四、装饰模式(组合优于继承 )

在某些情况下我们可能会过度地使用继承来扩展对象的功能, 由于继承为类型引入的静态特质, 使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。

经验之谈:如果父类和其中一个成员变量是同一个类,可能就是装饰模式

通过采用组合而非继承的手法,decorator模式实现了在运行时动态扩展对象功能的能力,而且可以根据需要扩展多个功能。

改成

 五、工厂方法(依赖倒置原则)

 在软件系统中,经常面临着创建对象的工作,由于需求的变化,需要创建的对象的具体类型经常变化。

定义一个用于创建对象的接口,让子类决定实例化哪一个类。为了解耦。

六、抽象工厂

经常面临着一系列相互依赖的对象,包含工厂方法。着重于系列问题

 

七、单例模式

经常有这样一些特殊的类,必须保证他们在系统中只存在一个实例,才能确保他们的逻辑正确性、以及良好的效率。

饿汉模式(先创建)、懒汉(后创建)

双加锁(存在内存排序的问题),解决办法:加上内存栅栏

静态创建

 

标签:依赖,对象,子类,扩展,模式,继承,设计模式
From: https://www.cnblogs.com/cuijy1/p/17979812

相关文章

  • js设计模式之命令模式
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>命令模式</title></head><body><buttonid="btn1">刷新菜单</button><buttonid="btn2">增......
  • 设计模式—行为型模式之观察者模式
    设计模式—行为型模式之观察者模式观察者模式(ObserverPattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模......
  • js设计模式之观察者模式
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>观察者模式</title></head><body><script>classEvent{constructor(){}//事件容器,可以是一个也可以是......
  • 《图解设计模式》PDF
    内容简介原版连续畅销12年、重印25次!194张图表+Java示例代码=轻松理解GoF的23种设计模式《程序员的数学》《数学女孩》作者结城浩又一力作◆图文并茂194张图表(包括57张UML类图)穿插文中,帮助理解各设计模式◆通俗易懂用浅显的语言逐一讲解23种设计模式,读完此书会......
  • 设计模式:结构型模式(套路:包一层)
    文章目录结构型模式(StructuralPattern)1.适配器模式(Adapter)1.1.定义1.2.结构1.3.时序图1.4.代码实现1.4.1.对象适配器模式实现1.4.2.类适配器模式实现1.5.优缺点1.5.1.对象适配器模式1.5.2.类适配器模式1.6.使用场景1.7.总结2.桥接模式(Bridge)2.1.定义2.2......
  • 设计模式:观察者模式
    1.观察者模式观察者模式(ObserverPattern)观察者模式又叫作发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependent)模式一对多的依赖关系,一个主题对象可被多个观察者对象同时监听,每当主题对象状态变化时,所有依赖它的对象都会得......
  • 《微服务架构设计模式》PDF
    成功地开发基于微服务架构的应用软件,需要掌握一系列全新的架构思想和实践。在这本独特的书籍中,微服务架构的先驱、Java开发者社区的意见领袖ChrisRichardson收集、分类并解释了44个架构设计模式,这些模式用来解决诸如服务拆分、事务管理、查询和跨服务通信等难题。本书将教......
  • 设计模式:六大原则
    文章目录1.单一职责原则(SingleResponsibilityPrinciple,SRP)1.1.定义1.2.代码实现1.3.优缺点1.4.使用场景2.开闭原则(Open-ClosedPrinciple,OCP)2.1.定义2.2.代码实现2.3.优缺点2.4.使用场景3.里氏代换原则(LiskovSubstitutionPrinciple,LSP)3.1.定义3.2.......
  • 我所关注的几个spring设计模式
    Spring框架中实现了许多的设计模式,而且都是非常优先的实现,这些值得我们学好好习。不过话说回来,我觉得自己只要关注几个即可:单例工厂代理适配器观察者委派在各种设计模式中,适配器和装饰器、代理模式其实都很类似,只是侧重点不同而已。spring的设计模式应用的很好,但spring......
  • 设计模式 经典问题
    目录策略模式和简单工厂模式的区别策略模式的类图为什么采用聚合简单工厂模式的类图为什么采用关联表示策略模式和简单工厂模式的区别策略模式和简单工厂模式是两种不同的设计模式,它们在用途和实现上有所不同。简单工厂模式是一种创建型模式,用于创建特定类型的对象。它通过一......