面向对象六大设计原则

开闭原则(Open Closed Principle)

  • 核心思想是:对扩展开放,对修改关闭
  • 也就是说,对已经使用的类的改动通过增加代码进行的,而不是修改现有代码

单一职责原则(Single Responsiblity Principle)

  • 其实就是开发人员经常说的”高内聚,低耦合

  • 也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个。

  • 在设计模式中,所有的设计模式都遵循这一原则

里式替换原则(Liskov Substitution Principle)

  • 核心思想:在任何父类出现的地方可以用它的子类来替代

  • 也就是说,同一个继承体系中的对象应该有共同的行为特征

依赖倒转原则(Dependency Inversion Principle)

  • 核心思想:要依赖于抽象和接口,不要依赖于具体实现

  • 其实就是说:在应用程序中,所有的类如果使用或依赖于其他的类,则应该依赖这些其他类的抽象类或者接口,而不是直接依赖这些其他类的具体类。

  • 为了实现这一原则,就要求我们在编程的时候针对抽象类或者接口编程,而不是针对具体实现编程。

接口分离原则(Interface Segregation Principle)

  • 核心思想:不应该强迫程序依赖它们不需要使用的方法。

  • 其实就是说:一个接口不需要提供太多的行为一个接口应该只提供一种对外的功能,不应该把所有的操作都封装到一个接口中

迪米特原则(最少认知原则,Principle of Least Knowledge)

  • 核心思想:一个对象应当对其他对象尽可能少的了解

  • 其实就是说:降低各个对象之间的耦合,提高系统的可维护性。在模块之间应该只通过接口编程,而不理会模块的内部工作原理,它可以使各个模块耦合度降到最低,促进软件的复用。

一。什么是设计模式:
针对开发过程中常见问题提出通用解决方案 二。学习设计模式好处 1.便于查看高级框架源码
2.增加解决问题的能力 三。适配器设计模式: 1.解决何种问题: 解决接口与接口实现类之间继承矛盾问题 2.适配器设计模式特征:
1)使用抽象类分离了接口与【接口实现】
2)抽象类分摊接口中需要常用的方法
3)使得【接口实现类】像逛超市一样,可以随意选择
接口中的方法来实现 3.参考Servlet规范中GenericServlet
四 模板设计模式:
1.解决何种问题: 让父类控制子类方法的调用顺序 2.模板设计模式好处: 开发人员在开发时,只需要考虑方法的实现。
不需要考虑方法在何种情况下被调用
五。代理模式:

      1.解决何种问题:将【次要业务】和【主要业务】解耦合

      2.【次要业务】和【主要业务】区分:

            【次要业务】:起到辅助功能,辅助【主要业务】顺利实现。
在项目 【次要业务】往往大量重复出现 【主要业务】:主要任务。 3.【次要业务】对于开发效率影响: 1)加载驱动类。 【次要业务】
2)建立连接通道 【次要业务】
3)建立数据库操作对象 【次要业务】 4)推送sql命令到数据库执行并返回处理结果 [主要业务] 5)销毁con,statement,rs【次要业务】 4.代理模式本质: 行为监听 代理对象 $proxy InvocationHandler <input type="button" onclick="fun1"> 5.代理模式组成: 1) 接口:声明需要被监听行为
2)代理实现类(InvocationHandler): 次要业务 次要业务和主要业务绑定执行
3)代理对象(监听对象) 6.业务: 饭前便后要洗手 【主要业务】:吃饭,便便
【次要业务】:洗手 7.Java代理模式多级代理----MyBatis 螳螂捕蝉,黄雀在后 蝉吃树脂
螳螂吃蝉
黄雀吃螳螂

springboot打包的更多相关文章

  1. springboot 打包

    springboot 打包 先clean 然后 maven package 通过命令java -jar target/GoshenWepPro-0.1.0.jar运行程序

  2. springboot打包不同环境配置与shell脚本部署

    本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assembly-plu ...

  3. SpringBoot打包成war

    关于SpringBoot打成jar包以及jar包如何在Linux持久运行,我在前面已经说过了,所以本次不再赘述. 关于SpringBoot打包成war,其实步骤特别简单,如下图所示(如果是jar,通常 ...

  4. springboot打包去除资源文件,启动时指定配置文件位置,使用log4j2替换默认logback

    springboot打包时,去掉资源文件 <build> <resources> <resource> <directory>src/main/reso ...

  5. springboot打包成war后部署项目出现异常 LifecycleException: Failed to start component

    完整异常:org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].Sta ...

  6. springboot打包成jar包后找不到xml,找不到主类的解决方法

    springboot打包成jar包后找不到xml,找不到主类的解决方法 请首先保证你的项目能正常运行(即不打包的时候运行无误),我们在打包时经常遇到如下问题: springboot打包成jar包后找不 ...

  7. SpringBoot 打包为Docker进行

    可以有两种方式: 1.dockerfile 2.maven docker 第一种方式:通过dockerfile打包Docker镜像 1.将dockerfile和 springboot打包的jar文件放 ...

  8. 聚合maven+spring-boot打包可执行jar

    整整搞了一天,终于解决这个问题了.这里是四个module,module之间存在依赖,打包两个可执行jar,看下最终效果吧 聚合maven+spring-boot的搭建很简单,和普通的聚合maven没有 ...

  9. 关于springboot 打包问题 jar包和 war包

    起因:项目开发完成   需要打包部署了  发现自己不会打包 那么开始网上学习打包? 那么怎么来打包那? 我们以前没有采用springboot 时候我们都是直接将项目打成war包形式  然后放到tomc ...

  10. Springboot打包执行源码解析

    一.打包 Springboot打包的时候,需要配置一个maven插件[spring-boot-maven-plugin] <build> <plugins> <plugi ...

随机推荐

  1. 自然语言处理工具python调用hanlp中文实体识别

    Hanlp作为一款重要的中文分词工具,在GitHub的用户量已经非常之高,应该可以看得出来大家对于hanlp这款分词工具还是很认可的.本篇继续分享一篇关于hanlp的使用实例即Python调用hanl ...

  2. 【转】Python metaclass

    转自: http://ju.outofmemory.cn/entry/32434 在回答了 yield关键字和 decorator的问题之后,我更明白了,我决定非常详细地回答这个问题. 读前警告:这个 ...

  3. <亲测>window+iis+letsencrypt+ssl 手动续期(通配符域名)

    之前提到过 window环境下 生成ssl通配符域名证方法为:https://www.cnblogs.com/duanweishi/p/9491209.html    下文为在window环境下手动续 ...

  4. 【java】之查看JVM参数的值

    查看JVM参数的值 可以根据java自带的jinfo命令: jinfo -flags pid 使用jmap可以查看某个Java进程中每个对象有多少个实例,占用多少内存,命令格式:jmap -histo ...

  5. STL基础--迭代器和算法

    1 迭代器 Iterators 5种迭代器类型 随机访问迭代器: vector, deque, array // 允许的操作 vector<int> itr; itr = itr + 5; ...

  6. 安卓模拟器错误 PANIC: Could not open

    最近在配置Android环境的时候着实让我迷惘了许久,最主要的一个问题就是在创建AVD的时候,出现如下问题: PANIC: Could not open ***

  7. Flume的基本概念

    Flume 概念 Flume 最早是Cludera提供的日志收集系统,后贡献给Apache.所以目前是Apache下的项目,Flume支持在日志系统中指定各类数据发送方,用于收集数据. Flume 是 ...

  8. Java学习——多线程例子:李四王五

    package cys; public class Example9_2 { public static void main(String[] args) { // TODO Auto-generat ...

  9. JavaScript for...in 循环

    JavaScript for...in 语句循环遍历对象的属性. 语法 for (对象中的变量) { 要执行的代码 } 注释:for...in 循环中的代码块将针对每个属性执行一次. 实例 循环遍历对 ...

  10. [转]VB 读写ini 配置文件

    转自 百度知道 C# 读写 ini配置文件 点此链接 'API 声明Public Declare Function GetPrivateProfileString Lib "kernel32 ...