设计模式:

设计模式常用的有23种。设计模式是一种设计经验的总结,为了解决某些场景下的某一类的问题,是一种通用的解决方案

创建型(5):解决对象创建的过程

结构型(7):把类或对象通过某种形式结合在一起

行为型(11):解决类或对象之间的交互,进行更合理的优化

创建型

1.单例模式(Singleton)

为了设计让一个类只能创建一个对象,在用户多的时候有效节省内存空间

思路:

(1)让构造方法成为私有方法private,保证外面不能随便创建对象

(2)单例,不是一个都没有。在本类中的某个成员位置上创建唯一的对象

写一行创建对象的语句

构造方法 不行,私有,本身就是这个构建过程
不行,没有返回值,创建了对象也无法给别人使用
方法 不行,每一次执行都会产生一个过程,保证不了唯一
属性 可以,为避免”套娃“现象,将属性设置为static静态,保证当前类下对象唯一

对象在创建的时候空间内部所有的成员都加载完毕才算完成

属性中若为构造方法,堆内存在调用空间的时候调用了构造方法,构造方法在栈内存中执行,会产生”套娃“现象,所以会造成栈内存溢出错误。解决方法:static

为了保证安全,将属性设置为私有属性。

总体来看,属性要设置为私有静态的,里面填写构造方法

(3)提供一个获取单个对象的方法给用户(get类名或newInstance())

注意:要将该方法设置为static,否则就会变成”先有鸡还是先有蛋“的问题了,调用方法需要对象,不需要显式的创建对象实现创建对象,通过类创建,所以加static

实现————->饿汉式(立即加载) 懒汉式(延迟加载) 生命周期托管(单例对象别人帮我们处理):

(1)私有的构造方法

(2)私有的静态的当前类对象作为属性

(3)公有的静态的方法返回当前类对象

对象的加载:

饿汉式(立即加载):对象在程序启动时加载 不会产生对象没有就拿来使用的问题,即空指针异常。但启动项目加载的对象过多,有些没使用产生的服务器承载压力的问题
懒汉式(延迟加载):对象什么时候用到了才会加载 可能会由于没有操作好,导致异常。启动项目时候只有需要的加载,不需要的还没有创建,不会浪费空间
生命周期托管(单例对象别人帮我们处理):对象加载过程交给别人

结构型

1.适配器模式(Adapter)

(1)缺省适配器模式:解决接口问题

例子:和尚————》吃斋、念经、打坐、撞钟、习武

​ 鲁智深—》不遵守

在规则与具体之间增加适配器进行规范。

接口规定规则,但存在具体类实现接口但不想实现里面的部分方法

解决方式:通过在中间层添加一个抽象类,该抽象类实现接口,同时自己拥有一些具体的方法,可以先在里面抛出异常,然后具体类在继承该抽象类。具体方法不用没关系,用的话根据意愿重写掉即可

行为型

1.策略模式(Strategy)

用来解决执行流程固定,执行的结果由于提供了不同的策略而不同

方法—–》抽象

具体实现—–》一个策略

相关文章
评论
分享
  • JavaEE开发准备

    个人电脑硬件配置: Windows 10 64位家庭中文版 8G运行内存 Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz 1.Java JDK安装及配置(1)下载和安装首先进入oracle网站中Ja...

    JavaEE开发准备
  • JSP综合作业

    预备:数据库本次作业选择的数据库为MYSQL,采用的数据库管理工具为Navicat Premium12。MYSQL下载地址为https://dev.mysql.com/downloads/mysql/ 使用Navicat连接数据库。 ...

    JSP综合作业
  • JSP实现简单的购物车

    主要知识点:jsp指令标记、动作标记、内置对象request、response、session等的使用。 直接上代码: login.jsp: 1234567891011121314151617181920212223242526272...

    JSP实现简单的购物车
  • JSP初识

    JSP(Java Server Page),由Sun公司倡导,许多公司参与,于1999年(与我年龄一样!!!)推出的一种Web服务设计标准。 注释HTML注释: 1<!--需要注释的HTML内容--> JSP注释: 1&...

    JSP初识
  • Java工具类

    API(Application Programming Interface)1.包装类Java是面向对象的语言,但其中存在基本类型,违背了面向对象的思想。 包装类是基本类型与引用类型之间交换的桥梁 类型 包装类 byte ...

    Java工具类
  • Scanner类的学习

    Scanner类导包:java.util 创建对象:Scanner input =new Scanner(System.in); 使用: int value = input.nextInt(); ​ String va...

    Scanner类的学习
  • 引用类型对象方法返回值问题

    想要通过对象方法交换两个数组中的值 目前采用了两种方法: (1)一次交换二者数组中的值 (2)交互两数组的数组名 (1) 1234567891011121314151617181920212223242526272829303132...

    引用类型对象方法返回值问题
  • Java入门到入土

    Java体系12345678910111213141516171819202122基础部分(JavaSE):1.面向对象的编程思想2.集合3.I/O流 底层MVC4.文件5.缓存6.反射、注解数据库(JDBC)+WEB(JavaEE)...

    Java入门到入土
  • Windows下neo4j的安装

    neo4j是一个高性能的NOSQL图形数据库,他将结构化数据存储在网络上而不是表中。他是一个嵌入式的、基于磁盘的、具备完全的事物特性的Java持久化引擎,neo4j也可看做是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。——百度...

    Windows下neo4j的安装
  • java实现类FTP程序

    继承程序设计实验,实验说明如图所示: 集成程序设计实验 TCP实现首先说明下基于TCP实现的功能: (1)能够实现多用户的同时连接 (2)用户执行成功的命令会在其他用户终端上显式说明 (3)当前用户数以及在线情况会在服务端实时显...

    java实现类FTP程序
Please check the comment setting in config.yml of hexo-theme-Annie!