Java设计模式

设计模式:程序员总结的并被广泛应用的代码套路

1、类的单例设计模式

采取一定的方法,保证整个软件系统中,对于某个类只能存在一个对象实例,并且该类只提供一个取得对象实例的方法。Runtime类就是用的是单例模式。

1.1、饿汉式

饿汉式: 类加载的时候,对象就被创建了。就算没有调用实例,实例对象也已经被创建了。可能存在资源浪费问题。

步骤如下
  1. 构造器私有化(添加private修饰即可):防止直接new
  2. 类的内部创建对象
  3. 向外暴露pubic static 类名 getInstance方法,用来获取实例
package com.zhw.static_;

class GirlFriend {
    private String name;
    // 只会加载一次实例对象
    private static GirlFriend gf = new GirlFriend("xx?.x");
    public GirlFriend(String name) {
        this.name = name;
    }
    // 向外暴露实例对象
    public static GirlFriend getInstance() {
        return gf;
    }
    // 执行当前类实例对象的打印时,调用toString
    @Override
    public String toString() {
        return name;
    }
}
public class ChildGame {
    public static void main(String[] args) {
        System.out.println(GirlFriend.getInstance());
    }
}

1.2、懒汉式

懒汉式: 只有调用获取实例时,才会创建对象实例。【当用户调用getInstance实例的时候,才会创建实例,访问其他静态属性,是不会创建实例的】。可能存在多线程安全问题在判断==null的时候。

package com.zhw.static_;

class GirlFriend {
    private String name;
    // 只会加载一次实例对象
    private static GirlFriend gf;
    public GirlFriend(String name) {
        this.name = name;
    }
    // 向外暴露实例对象
    public static GirlFriend getInstance() {
        if(gf == null) {
            gf = new GirlFriend("xx?.x");
        }
        return gf;
    }
    // 执行当前类实例对象的打印时,调用toString
    @Override
    public String toString() {
        return name;
    }
}
public class ChildGame {
    public static void main(String[] args) {
        System.out.println(GirlFriend.getInstance());
    }
}

2、模版设计模式

模版设计模式: 将公共的代码抽取到父类,需要在子类实现不同逻辑的同一功能方法,在父类抽象成抽象方法。

abstract public class Template {

    public abstract void job();

    // 抽取公共的方法
    public void calculateTime() {
        Long start = System.currentTimeMillis();
        job();  // 根据当前子类的实例对象,进行对象的动态绑定。
        Long end = System.currentTimeMillis();
        System.out.println("执行时间是;" + (end - start));
    }
}
  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原谅我很悲

不要打赏哦,加个好友一起学习呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值