首页 > 代码库 > 单例、简单工厂模式。

单例、简单工厂模式。

单例模式:

*
*单例模式:一类只有一个实例。
*特点:构造方法私有化,提供一个静态的方法获取实例。
*懒汉式:使用时再创建对象。
*/
public class Singleton2 {

// private String name;
// 修饰符 数据类型 属性名;
private static Singleton2 singleton ;

private Singleton2(){
}

public static Singleton2 getInstance(){
if(singleton==null){
singleton = new Singleton2();
}
return singleton;
}

}

 

单例模式:一类只有一个实例。
*特点:构造方法私有化,提供一个静态的方法获取实例。
*饿汉式:加载时创建对象
*/
public class Singleton {
private static Singleton singleton = new Singleton();

private Singleton(){
}

public static Singleton getInstance(){
return singleton;
}

}

 

public class TestSingleton {
public static void main(String[] args) {
Singleton s = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s==s2);//如何引用类型使用"==",其比较的是地址是否相同。
}
}

简单工厂模式:

 简单工厂模式(静态工厂方法):属于创建型模式,主要用生成"产品"。
* 工厂模式的命名:xxxFactory--->生成xxx
*需求:创建一个生成斧头的工厂,根据用户传入的参数生产相应斧头并返回
* 如果参数为steel--->生成SteelAxe的一个对象
* 如果参数为stone--->生成StoneAxe的一个对象
*如何实现工厂模式?
* 1.编写父类和子类或接口和实现类
* 2.编写静态的工厂方法,返回值类型为父类或接口。--->多态
* 3.根据用户的需求动态创建子类的实例,并返回。
*
*/
public class AxeFactory {
/**
* 负责创建产品(斧头)
* @param ch
* @return
*/
public static Axe getInstance(String ch){
Axe axe=null;
if(ch.equals("steel")){
axe = new SteelAxe();
}else if(ch.equals("stone")){
axe = new StoneAxe();
}
return axe;
}



public static void main(String[] args) {
Axe axe = AxeFactory.getInstance("steel");
axe.chop();
System.out.println("*********************");
Axe axe2 = AxeFactory.getInstance("stone");
axe2.chop();

}

}

public abstract class Axe {
public abstract void chop();
}

 

public class SteelAxe extends Axe {

@Override
public void chop() {
System.out.println("我是铁斧,砍日本人锋利!");
}

}

public class StoneAxe extends Axe {

@Override
public void chop() {
System.out.println("我是石斧,砍日本人很钝!");
}

}

 

单例、简单工厂模式。