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

OO 设计模式

时间:2023-07-21 23:33:27浏览次数:42  
标签:OO 原则 对象 创建 模式 设计模式

面向对象(Object Oriented - OO)
设计模式(Design Pattern)


概念
、设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结

3个大类,23个设计模式
、创建型模式:对象实例化的模式
  单例模式:确保某一个类只有一个实例,并且提供一个全局访问点
  简单工厂模式:让子类来决定要创建哪个对象
  抽象工厂模式:创建多个产品族中的产品对象
  建造者模式:用来创建复杂的复合对象
  原型模式:通过复制原型来创建新对象
、结构型模式:把类或对象结合在一起形成一个更大的结构
  适配器模式:将原来不兼容的两个类融合在一起
  桥接模式:将两个能够独立变化的部分分离开来
  组合模式:将整体与局部(树形结构)进行递归组合,让客户端能够以一种的方式对其进行处理
  装饰者模式:为对象添加新功能
  外观模式:对外提供一个统一的接口用来访问子系统
  享元模式:使用对象池来减少重复对象的创建
  代理模式:控制客户端对对象的访问
、行为型模式:类和对象如何交互,及划分责任和算法
  责任链模式:将事件沿着链去处理
  命令模式:将请求封装成命令,并记录下来,能够撤销与重做
  解释器模式:定义语法,并对其进行解释
  迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素
  中介者模式:将网状结构转变为星型结构,所有行为都通过中介
  备忘录模式:保存对象的状态,在需要时进行恢复
  观察者模式;状态发生改变时通知观察者,一对多的关系
  状态模式:根据不同的状态做出不同的行为
  策略模式:封装不同的算法,算法之间能互相替换
  模板方法模式:定义一套流程模板,根据需要实现模板中的操作
  访问者模式:基于稳定数据结构,定义新的操作行为

7大设计模式原则
、单一职责原则(SRP):一个类应该只有一个发生变化的原因
、开放封闭原则(OCP):软件实体应该对扩展开放,对修改关闭。是设计原则的核心
、里氏替换原则(LSP):子类可以扩展父类的功能,但不能改变父类原有的功能。是对子类型的特别定义
、接口隔离原则(ISP):客户端不应该依赖它不需要的接口。一个类对另一个类的依赖应该建立在最小的接口上
、依赖倒置原则(DIP):程序要依赖于抽象接口,不要依赖于具体实现。简单说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合
、迪米特法则:一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解
、合成复用原则:要少用继承,多用合成关系来实现

4要素
、模式名称:用一两个词来描述模式的问题、解决方案和效果
、问题:描述了应该在什么情况下使用设计模式
、解决方案:描述了设计的组成成分,他们之间相互关系及各自职责和协作方式
、效果:描述了模式应用效果及使用模式应权衡问题

 

常用的设计模式:单列模式、简单工厂模式、抽象工厂模式、装饰者模式、代理模式、责任链模式、观察者模式

 

标签:OO,原则,对象,创建,模式,设计模式
From: https://www.cnblogs.com/wjswsjf/p/17455277.html

相关文章

  • ZooKeeper 之 zkCli.sh客户端的命令使用
    zkCli.sh的使用ZooKeeper服务器简历客户端./zkCli.sh-timeout0-r-serverip:port./zkCli.sh-serverhostname:port  port一般是2181(默认端口),比如./[email protected]:2181 h显示所有命令lspath:查看某个节点下的所有子节点信息ls/:列出根节点下......
  • springboot二
    对springboot的一些补充在具体的应用开发中可以使用properties配置文件或者yaml配置文件两种一般建议开发中首选yml格式的文件,文件后缀可以是yml或者yaml。可以通过格式缩进的方式表达层次结构。解析yml格式的文件需要依赖snakeyaml,这个依赖由web-starter依赖引......
  • Spring Boot中内置Tomcat最大连接数、线程数与等待数 实践调优
    在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat服务器本身具有Web服务器的功能,可以作为独立的Web服务器来使用。一、SpringBoot应用......
  • springboot~redisson中使用lua脚本的问题
    起因事情是这样的,我在通过redission进行限流时,用到了在lua脚本里进行数值计算,而我在本地测试过程中,发现所有tonumber()方法时,返回值都是nil,这个原因最后找到了,是没有配置序列化的方式,出现错误提示如下:org.redisson.client.RedisException:ERRErrorrunningscript(calltof_......
  • springboot原理
    SpringApplication.run()执行流程:1.初始化监听器、自定义监听器。2.发布ApplicationStartedEvent事件(监听ApplicationStartedEvent方法:1、实现ApplicationStartedEvent  2、SpringApplication.addListener())3.装配参数和环境,确定是web环境还是非web环境。4.装配完环境后,......
  • Hibernate初始化时在OneToOneSecondPass类中出现NullPointerException
    启动项目 Hibernate随即报错Causedby:java.lang.NullPointerException   atorg.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:135)  原因: 主类方,无外键方@OneToOne(mappedBy="carveEReviewproject",targetEntity=CarveEReviewcomment.cla......
  • Spring框架的设计理念与设计模式(4)-Context组件
    关键词:Context,组件,Spring,BeanFactory,容器,Ioc上一章:[b]Spring框架的设计理念与设计模式(3)-Bean组件[/b][url]http://javapub.iteye.com/blog/751550[/url]下一章:[b]Spring框架的设计理念与设计模式(5)-Core组件[/b][url]http://javapub.iteye.com/......
  • linux查看Hadoop状态
    Linux查看Hadoop状态简介Hadoop是一个分布式计算框架,用于处理大规模数据集的计算。在开发和调试Hadoop应用程序时,了解集群的状态是非常重要的。本篇文章将介绍如何在Linux环境下查看Hadoop集群的状态。流程下面是查看Hadoop状态的步骤:步骤描述1.登录到Hadoop集群的N......
  • gridlookupedit可编辑输入属性设置
    设置三个属性this.gl_IOPerson.Properties.ImmediatePopup=true;this.gl_IOPerson.Properties.PopupFilterMode=DevExpress.XtraEditors.PopupFilterMode.Contains;this.gl_IOPerson.Properties.TextEditStyle=DevExpress.XtraEditors.Controls.......
  • springboot学习之十三(druid+mybaits plus)
    Druid介绍Druid是阿里巴巴的一个开源项目,号称为监控而生的数据库连接池,在功能、性能、扩展性方面都超过其他例如DBCP、C3P0、BoneCP、Proxool、JBossDataSource等连接池,而且Druid已经在阿里巴巴部署了超过600个应用,通过了极为严格的考验,这才收获了大家的青睐! Springboot集成......