Java设计模式
Java设计模式
设计模式:程序员总结的并被广泛应用的代码套路
1、类的单例设计模式
采取一定的方法,保证整个软件系统中,对于某个类只能存在一个对象实例,并且该类只提供一个取得对象实例的方法。Runtime类就是用的是单例模式。
1.1、饿汉式
饿汉式: 类加载的时候,对象就被创建了。就算没有调用实例,实例对象也已经被创建了。可能存在资源浪费问题。
步骤如下
- 构造器私有化(添加private修饰即可):防止直接new
- 类的内部创建对象
- 向外暴露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));
}
}
原文地址:https://blog.csdn.net/weixin_44224921/article/details/140202639
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!