------- android培训、java培训、期待与您交流! ----------
什么是设计模式?
解决某一问题最行之有效的方法,就称为设计模式。
单例设计模式:
单例模式就是确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
举例说明:
class SingleTest
{
public static void main(String[] args)
{
Single sing1 = Single.getInstance();
Single sing2 = Single.getInstance();
sing1.setNumber(20);
System.out.println("sing2.getNumber() = "+sing2.getNumber());
boolean b = sing1.getNumber()==sing2.getNumber();
System.out.println("sing1.getNumber()==sing2.getNumber() = "+b);
boolean bool = sing1.equals(sing2);
System.out.println("sing1.equals(sing2) = "+bool);
}
}
/*
class Single //饿汉式:Single类一进内存,就已经创建好了对象。
{
private static Single single = new Single();
private Single(){}
public static Single getInstance()
{
return single;
}
}
*/
class Single //懒汉式:Single类进内存对象还没有存在,只有调用了getInstance方法时才建立对象,对象是函数被调用时才初始化,也叫做对象的延时加载。
{
private int number;
private static Single single = null;
private Single(){}
public static Single getInstance() //同步代码块方式
{
if(single==null)
{
synchronized(Single.class)
{
if(single==null)
single = new Single();
}
}
return single;
}
/*
public static synchronized Single getInstance() //同步函数的方式
{
if(single==null)
single = new Single();
return single;
}
*/
public void setNumber(int number)
{
this.number = number;
}
public int getNumber()
{
return number;
}
}
运行结果如下:
C:\Users\lenovo\Desktop>javac SingleTest.java
C:\Users\lenovo\Desktop>java SingleTest
sing2.getNumber() = 20
sing1.getNumber()==sing2.getNumber() = true
sing1.equals(sing2) = true
单例设计模式的总结:
从上面的例子可以看出,第一种方式效率更高更安全,所以定义单例,建议使用饿汉式。
对象数组:
就是把对象用数组方式来存储,相当于集合。
举例说明:
class Person
{
private String name;
private int age;
Person()
{
}
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}
public String say()
{
return "我是:"+this.name+",今年:"+this.age+"岁";
}
}
public class ObjectArrayTest
{
public static void main(String[] args)
{
Person p[] = {new Person("张三",19),new Person("李四",25),new Person("王五",24)}; //把对象存入数组
System.out.println("数组中原来的对象是:");
for(int i=0;i<p.length;i++)
{
System.out.println(p[i].say());
if(i==2)
{
p[i].setName("SetObj");
p[i].setAge(29);
}
}
System.out.println("数组中设置后的对象是:");
for(int i=0;i<p.length;i++)
System.out.println(p[i].say());
}
}
运算结果如下:
C:\Users\lenovo\Desktop>javac ObjectArrayTest.java
C:\Users\lenovo\Desktop>java ObjectArrayTest
数组中原来的对象是:
我是:张三,今年:19岁
我是:李四,今年:25岁
我是:王五,今年:24岁
数组中设置后的对象是:
我是:张三,今年:19岁
我是:李四,今年:25岁
我是:SetObj,今年:29岁
对象数组的总结,不只是集合才可以存对象,数组也可以存对象,使用的时候看需求而选用数组还是集合