Java设计模式
1,静态工厂方法模式
提供一个工厂类,构造方法私有,不允许外界直接创建该工厂类的对象.
在工厂类中添加一个静态方法,用于创建对象并返回.
缺点:不利于后期维护
如果后期要再创建类,还要再创建类并在静态工厂类中添加新的功能.
/**
* 动物的工厂类
* @author Apple
*/
public class AnimalFactory {

//私有功能
private AnimalFactory(){}
//工厂改进:提供猫和狗这两种动物
public static Animal createAnimal(String type){if("dog".equals(type)){return new Dog() ;  }else if("cat".equals(type)){return new Cat() ;}else {return null ;}
}

}
2,工厂方法模式
需要提供抽象类,具体的类,一个工厂接口,以及具体的类的工厂类实现工厂接口.
该工厂接口中的抽象方法的返回值是该抽象类
针对每个具体动物都提供一些对应的工厂类—>实现该接口—>返回值就是需要具体的动物对象
缺点:代码量太大
/工厂的接口
public interface Factory {
//就是用来提供常见具体动物的功能
public abstract Animal createAnimal() ;
}

public class CatFactory implements Factory {
//由猫工厂类提供对象
@Override
public Animal createAnimal() {
return new Cat() ;
}
}
3,单例模式
在内存中始终只有一个该类对象
饿汉式
特点:一加载该类便会创建一个对象
要求:无参构造私有化
在成员变量位置创建该类的实例
需要提供公共的访问方法
//饿汉式
public class Student {

//无参构造私有化,目的是为了让外界不创建对象
private Student(){}//在成员变量的位置创建该类的实例
//静态只能访问静态,所以需要加上静态修饰
//为了不让外界修改当前这个实例,所以加入private修饰
private static Student s = new Student() ;//提供给公共的访问方法,返回值就是该类的实例对象
public static Student getStudent(){return s ;
}

}

懒汉式
特点:并不是加载某个类就直接创建对象,而是在需要的时候再创建对象
1)懒加载
2)线程的安全问题:使用同步代码块进行解决
public class Teacher {

/*** 构造方法私有化*/
private Teacher(){}//在成员变量位置声明变量
private static Teacher t = null ; //共享数据//提供公共的方法访问
public synchronized static Teacher getTeacher(){ //Teacher.class锁对象//判断 当当前该对象没有更多引用的时候,才创建对象//t1,t1 ,t3 三个对象if(t==null){t = new Teacher() ;}return t ;
}

}
如果是开发中使用的是———>饿汉式(不会出现问题的单例模式)
如果是面试中使用的是———->懒汉式(可能会出现问题的单例模式,线程安全问题)
面试题: 简单阐述下单例模式有几种,并且写出一个单例模式代码!(写懒汉式) 就想问你能否想到懒汉式中多线程的安全问题…

4,装饰者设计模式
子类封装子类

Java三种设计模式相关推荐

  1. java中控制反转_Java如何利用IOC控制反转的三种设计模式详解

    这篇文章主要为大家详细介绍了Java使用IOC控制反转的三种设计模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 对于许多开发人员来说,控制反演(IoC)都是一个模糊的概念,因为他们在现实世界中 ...

  2. 剖析java三种工厂设计模式

    java三种工厂设计模式 1. 简单工厂模式 简单工厂有以下三个主角: Factory:工厂负责生产产品 AbstructProduct:抽象产品,就好比华为手机,我没说是华为那个型号手机. Prod ...

  3. java 23种设计模式及具体例子 收藏有时间慢慢看

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代 码可靠性. 毫无疑问,设计模式 ...

  4. java 23种设计模式(转载)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  5. java 23种设计模式 04 单例模式

    java 23种设计模式 04 单例模式 一.什么是单例模式 单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象.也就是说,在整个程序空间中,该类只存在一个实例对象.   ...

  6. 干掉if else!试试这三种设计模式,优化代码贼顺手!

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...

  7. java同步异步调用_详解java 三种调用机制(同步、回调、异步)

    1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,jsPwwCe它是一种单向调用 2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口: 3:异步调用:一种类似消 ...

  8. java 三种将list转换为map的方法详解

    这篇文章主要介绍了java 三种将list转换为map的方法详解的相关资料,需要的朋友可以参考下 java 三种将list转换为map的方法详解 在本文中,介绍三种将list转换为map的方法: 1) ...

  9. JAVA 三种线程实现创建方式

    JAVA 三种线程实现/创建方式 方式一:继承Thread类 通过继承Thread类来创建一个自定义线程类.Thread类本质上就继承了Runable接口,代表一个线程类.启动线程的唯一办法就是通过T ...

最新文章

  1. python GUI编程( 二 ) (基于PyQt5)
  2. CurcveLane-NAS:华为中大提出一种结合NAS的曲线车道检测算法
  3. mysql-proxy 0.8.5_主从读写分离----mysql-proxy0.8.5安装与配置
  4. ISR:中断服务程序需要满足的要求
  5. 如何修改mysql服务器,怎么修改mysql服务器地址
  6. Java Agent
  7. powershell 常用命令笔记
  8. lucene 多索引目录搜索实现方法
  9. 在线考试系统需求分析
  10. 算法每日一题--分治算法(一)-李富贵要上岸985
  11. 教你识别一些sequence的相关问题
  12. JDK、TOMCAT 配置环境变量
  13. java时间随机数_java开发代码工具类(时间戳/随机数/日期等)
  14. php如何跟踪调试,PHP使用debug_backtrace方法跟踪调试代码调用详解
  15. 用Python抓取网页并解析
  16. 第四十七节,random 随机数模块
  17. C++中对象初始化赋值是否需要调用operator=函数
  18. 玩转c语言——c语言小游戏 迷宫小游戏(附源码)
  19. 在群晖NAS上使用Docker 蒲公英
  20. example包下载

热门文章

  1. iib 里面wsdl调用的坑
  2. 免费/中文/功能强大的Modbus调试软件:MThings
  3. 正则表达式中,如何在任意匹配字符后面加上原字符和特定内容
  4. 一文读懂C++虚函数的内存模型
  5. AppID、AppKey、AppSecret
  6. 【Python代码】文件查重(01)-简易版
  7. Java 源码 - Socket 源码及面试题
  8. 数据化管理 - 洞悉零售及电商运营【初始】
  9. 16个tomcat面试题
  10. 前端追梦人JavaScript教程