单例模式和工厂模式Demo简单演示

一、单例模式

Singleton.Java:

public class Singleton {
 
	public static Singleton instance = null;
	private Singleton(){}
	public static Singleton getInstance(){
		if(instance==null){
			return new Singleton();
		}
		return instance ;
	}
	
	public void show(){
		System.out.println("Singleton Mode 【单例模式】 !");
	}
}

二、工厂模式

AnimalFactory.java

//1.共同的接口  动物接口
interface IAminmal{
	void run(); 
}
 
//2.实现类1,狗 Dog
class Dog implements IAminmal{
 
	@Override
	public void run() {
		System.out.println("I'am Dog running....");
	}
	
}
 
//3.实现类2,猫 Cat
class Cat implements IAminmal{
 
	@Override
	public void run() {
		System.out.println("I'am Cat running....");
	}
}
 
//4.实现类3,猪 Pig
class Pig implements IAminmal{
 
	@Override
	public void run() {
		System.out.println("I'am Pig running....");
	}
}
 
//4.动物工厂类接口 声明一个方法,用来生产各种各样的动物
interface IAninmalFactory{
	 IAminmal createAnimal(String name);
}
 
public class AnimalFactory implements IAninmalFactory{
 
    private IAminmal aminmal = null;
	@Override
	public  IAminmal createAnimal(String name) {
		if(name.equals("Dog")){
			aminmal = new Dog();
		}
	    if(name.equals("Cat")){
	    	aminmal = new Cat();
		}
		if(name.equals("Pig")){
			aminmal = new Pig();
		}
		//1.返回对应的小动物的接口实现的实例
		//2.对于内部(生产者)而言,具体生产哪一个动物,是封装好的,已经细化过了
		//3.对于外部(消费者)而言,我们只要告诉当前的工厂,我们需要哪一个动物就行,生产细节无需关心
		return aminmal;
	}
}

三、单例模式和工厂模式案例 测试

TestMain.java

public class TestMain {
    public static void main(String[] args){
    	
    	//1.单例模式,无论你怎么getInstace,你得到的还是同一个类的实例,省资源
    	Singleton.getInstance().show();
    	
    	//2.工厂模式, 由动物工厂生产出我们指定的动物,并利用产生的动物实例调用其run方法
    	IAninmalFactory factory = new AnimalFactory();
    	factory.createAnimal("Pig").run();
    	factory.createAnimal("Cat").run();   	
    }
}

四、测试结果

猜你喜欢

转载自blog.csdn.net/weixin_36328444/article/details/81090112