首页 > 编程语言 >35_Java中的设计模式简单了解

35_Java中的设计模式简单了解

时间:2023-01-07 10:35:42浏览次数:46  
标签:Runtime Java 35 Teacher static Student 设计模式 public

Java中的设计模式

注意:只是简单了解

设计模式(Design pattern)

​ 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解、保证代码可靠性

​ 设计模式和具体的语言无关,学习设计模式就是要建立面向对象的思想,尽可能的面向接口编程,低耦合,高内聚,使设计的程序可重复利用

单例设计模式

​ 单例模式就是要确保类在内存中只有一个对象,该实例必须自动创建,并且对外提供

​ 在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能

如何保证类在内存中只有一个对象呢?(饿汉式)

​ 把构造方法私有

​ 在成员位置自己创建一个对象

​ 通过一个公共的方法提供访问

参考代码:

package com.itheima_01;

public class Student {
    //构造方式私有
    private Student(){}

    //创建一个对象
    //防止外界直接修改值,使用private修饰
    private final static Student s = new Student();

    //提供一个公共方法获取这个对象
    public static Student getStudent(){
        return s;
    }
}
package com.itheima_01;

public class StudentDemo {
    public static void main(String[] args){
//        Student s1 = new Student();
//        Student s2 = new Student();
//        System.out.println(s1 == s2);

        Student s1 = Student.getStudent();
        Student s2 = Student.getStudent();
        System.out.println(s1 == s2);
    }
}

懒汉式写法参考代码:

package com.itheima_02;
/*
    单例设计模式:
         饿汉式:类一加载就创建对象
         懒汉式:用的时候才去创建对象

    在开发中,我们使用饿汉式,因为这种方式不会出现线程安全问题

    产生线程安全问题的三要素:
         1、是否存在多线程环境
         2、是否有共享数据
         3、是否有多个线程操作共享数据
 */
public class Teacher {
    private Teacher(){}

    private static Teacher t = null;

    public synchronized static Teacher getTeacher(){    //使用关键字synchronized使方法加上锁
        //t1、t2、t3
        //当前一个线程还没有创建完毕时后一个也进来创建
        if(t == null){
            t = new Teacher();
        }

        return t;
    }
}
package com.itheima_02;

public class TeacherDemo {
    public static void main(String[] args) {
        Teacher t1 = Teacher.getTeacher();
        Teacher t2 = Teacher.getTeacher();

        System.out.println(t1 == t2);
        System.out.println(t1);
        System.out.println(t1);
    }
}

JDK中的单例设计模式示例:

package com.itheima_03;

import java.io.IOException;

/*
    static Runtime getRuntime() 返回与当前Java应用程序关联的运行时对象。
 */
public class RuntimeDemo {
    public static void main(String[] args) throws IOException {
        Runtime r1 = Runtime.getRuntime();
//        Runtime r2 = Runtime.getRuntime();
//
//        System.out.println(r1 == r2);

        /*
        public class Runtime {
            private Runtime(){}

            private static final Runtime currentRuntime = new Runtime();

            public static Runtime getRuntime() {
                return currentRuntime;
            }
        }
         */
        //将指令再cmd中进行运行
//        r1.exec("calc");  //打开计算机
//        r1.exec("notepad");   //打开记事本

//        r1.exec("shutdown -s -t 1000");   //定时关机
//        r1.exec("shutdown -a"); //取消关机计划
    }
}

标签:Runtime,Java,35,Teacher,static,Student,设计模式,public
From: https://www.cnblogs.com/fragmentary/p/17032191.html

相关文章

  • 37_Java中的浮点数精确运算
    java中的BigDemcimal用于小数的精确运算构造方法:​ BigDecimal(Stringval)四则运算:​ add(BigDecimalb):加法​ subtract(BigDecimalb):减法​ multiply......
  • 38_Java中的注解
    java中的注解1、注解概述@Ovrride:用来修饰方法,表示该方法是重写父类的方法,如果不是,就会报错注解(Annotation):也叫元数据,一种代码级别的说明,它是JDK1.5及以后版本引......
  • 39_Java中的单元测试
    单元测试单元测试概述:​ 在程序中,一个单元可以时一个完整的模块,但它通常是一个单独的方法或者程序​ 在面向对象的编程中,一个单元通常是整个界面,例如类,但可能是......
  • 34_Java8 日期API
    Java8日期APIDate如果不格式化;输出的日期可读性差;而Java8的时间类直接输出可读性好Date存在线程安全问题;而Java8的时间类都是线程安全的JDK8新增日期类:​ Loc......
  • JAVA的方法
    什么是方法方法是语句的集合,他们在一起执行一个功能。方法是解决问题的步骤的有序组合。方法包含于类或对象中。方法在程序中被创建,在其他地方被引用。方法的组......
  • 用Java方法和循坏的计算器
    importjava.util.Scanner;publicclassPractise{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);//创建一个对象用......
  • 认识 Java 中的 StringBuilder 类
    Stringstr="hello"; System.out.println(str); System.out.println(str+"world"); }输出的结果是:hellohelloworld从运行结果中我们可以看到,程序运行时会额外创建......
  • java基于ssm的图书管理系统图书借阅管理网站图书管理网站源码
    简介本项目是图书借阅管理系统,主要实现了对图书的管理和借阅。演示视频https://www.bilibili.com/video/BV14p4y1H7GQ/?share_source=copy_web&vd_source=ed0f04fbb713......
  • java基于ssm的个人博客系统个人博客网站个人博客项目源码
    简介Javassm开发的个人博客系统,可以发布博客,照片,站长留言。演示视频https://www.bilibili.com/video/BV1sf4y1y7Ne/?share_source=copy_web&vd_source=ed0f04fbb713154......
  • java服装商城购物商场项目源码
    简介Java基于ssm开发的服装商城,用户可以浏览商品和特价商品,加入购物车,直接下单支付,在我的个人中心里可以管理自己的订单,收货地址,编辑资料等。管理员可以发布商品,上下架商......