java基础 第九章(设计模式 单例模式)
设计模式(23种)
设计模式就是一种思想 java 、c++……
就比如是盖房子,起初只是为了住人,后来房子装饰,装饰就是一种设计模式,分为欧式,中式呀,这就是设计模式。
一、第一种单例模式(饿汉式)
1. 一般的思想: 谁调用一个方法,谁就去new一个对象
单例:自己new自己
2.分析及步骤
(1)不能让外界创建对象(构造函数 private )
(2)让调用类自己去创建一个对象。
(3)提供一个方法,让外界可以获取第二步创建的共享对象
例1:class Single{
private Single(){ //构造函数
}
private static Single single = new Single(); //自己创建对象
public static Single getInstance(0{
return single;
}
}
public class SingleDemo{
public static void main(String[] args){
Single single1 = Single.getInstance();
Single single2 = Single.getInstance();
System.out.println(single1 = single2); // true
}
}
例2: 买袜子的单例
class Sock{
private int count;
private double money;
private Sock{
}
private static Sock.sock = new Sock();
public static Sock getInstance(){
return sock;
}
public void setCount(int cc){
count = count + cc;
}
public int getCount(){
return count;
}
public double getMoney(){
return money = count * 10;
}
}
public class SockDemo{
public static void main(String[] args){
Sock sock1 = Sock.getInstance();
sock1.setCount(2);
double money1 = Sock.getMoney();
System.out.println(money1);
}
}
二、第二种单例设计模式(懒汉式)
例:class Single{
private Single(){
}
private static Single single = null;
public static Single getInstance(){
if ( single == null) {
single = new single();
}
return single;
}
}
public SingleDemo{
public static void main(String[] args){
Single single1 = Single.getInstance();
Single single2 = Single.getInstance();
System.out.println(single1 == single2); //true
}
}
三、构造函数
1.就是给对象初始化
2.没有返回值
3.函数的名字和类名一样
例:class Student{
private int id;
private String name;
public student(){
id = 1;
name = "java";
}
public student( int id , String name ){
this.id = id;
this.name = name;
}
public void sys(){
System.out.println(id);
System.out.println(name);
}
}
public class studentDemo{
public static void main(String[] args){
Student stu1 = new Student();
Student stu2 = new Student();
stu1.sys();
stu2.sys();
}
}