JavaでのgetInstanceメソッドの説明
1667 ワード
1.抽象クラスで
抽象クラスは直接newできないので、インスタンス化するにはgetInstance()メソッドしか使えません.コードは以下の通りです.
2.単例設計モード
プログラムにクラスのインスタンス化が1回しか現れないことを望む場合は、getInstance()メソッドも必要です.コードは次のとおりです.
抽象クラスは直接newできないので、インスタンス化するにはgetInstance()メソッドしか使えません.コードは以下の通りです.
package test;
abstract class Person
{
private String title;
public Person(String title)
{
this.title = title;
}
abstract public void eat();
public static PersonImpl getInstance(String title)
{
return new PersonImpl(title);
}
// static :
//No enclosing instance of type Person is accessible. Must qualify the allocation with an enclosing instance of type Person (e.g. x.new A() where x is an instance of Person).
static class PersonImpl extends Person
{
public PersonImpl(String title) {
super(title);
// TODO Auto-generated constructor stub
}
@Override
public void eat()
{
System.out.println("Eat!!!");
}
}
}
public class TestDemo
{
public static void main(String args[])
{
Person p = Person.getInstance("Limbo");
p.eat();
}
}
2.単例設計モード
プログラムにクラスのインスタンス化が1回しか現れないことを望む場合は、getInstance()メソッドも必要です.コードは次のとおりです.
package test;
class Singleton
{
private String title;
private String content;
private static Singleton SINGLETON = null;
private Singleton(String title,String content)
{
this.title = title;
this.content = content;
}
public static Singleton getInstance()
{
if(SINGLETON == null)
SINGLETON = new Singleton("Kobe", "MVP");
return SINGLETON;
}
public String toString()
{
return this.title + " - " + this.content;
}
}
public class TestDemo
{
public static void main(String args[])
{
Singleton s = Singleton.getInstance();
System.out.println(s);
}
}