以工厂模式和单例模式举例子
import java.util.Scanner;
public class firstClass {
public static void main(String[] args) {
//单例模式
//饿汉模式
Singleton1.getsingleton1().run();
//只能有这一个实例
//懒汉模式
Singleton2.getsingleton2().run();
//工厂模式
System.out.println("请输入类型");
String type = new Scanner(System.in).nextLine();
HumanFactory factory = new HumanFactory();
Human h = factory.produce(type);
h.Say();
//工厂模式的好处就是可以通过改变字符串去控制相关的类,必须输入man 他就会调用Man 类,woman 就会调用 Woman类
}
}
interface Human{
public void Say();
}
class Man implements Human{
public void Say() {
System.out.println("hi man");
}
}
class Woman implements Human{
public void Say() {
System.out.println("hi woman");
}
}
//工厂类
class HumanFactory {
public Human produce(String type) {
if("man".equals(type)) {
return new Man();
}
else if("woman".equals(type)) {
return new Woman();
}
else {
System.out.println("错误");
return null;
}
}
}
//单例模式类
//这种是饿汉模式
class Singleton1{
private static Singleton1 s1 =new Singleton1();
//让这个实例指向自己私有的静态引用,也就是主动创建
private Singleton1() {//私有的构造方法
}
public static Singleton1 getsingleton1() {
return s1;
}
public void run() {
}
}
//饿汉模式:立即加载
//懒汉模式:延迟加载
//懒汉模式
class Singleton2{
private static Singleton2 s2 ;
//让这个实例指向自己私有的静态引用,也就是主动创建
private Singleton2() {//私有的构造方法
}
public static Singleton2 getsingleton2() {
if(s2==null) {
s2 = new Singleton2();
}
return s2;
}
public void run() {
}
}
//饿汉模式:立即加载
//懒汉模式:延迟加载