Java-面向对象_简单工厂设计模式

   不仅可以使用父类做方法的形参,还可以使用父类做方法的返回值类型,真实返回的对象可以是该类的任意一个子类对象。

简单工厂模式的实现,它是解决大量对象创建问题的一个解决方案,将创建和使用分开,工厂负责创建,使用者直接调用即可。简单工厂模式的基本要求是:

  定义一个static方法,通过类名直接调用

  返回值类型是父类类型,返回的可以是其任意子类类型

  传入一个字符串类型的参数,工厂根据参数创建对应的子类产品

 

子类代码:

public class Pig extends Animal{
    public void shut() {
        System.out.println("我是小猪,我会嗯嗯嗯叫");
    }
}
public class Cat extends Animal{
    public void shut() {
        System.out.println("我是小猫,我会喵喵叫");
    }
}

 

使用者代码:

public class Girl {
    public void play(Animal animal ) {
        animal.shut();
    }
}

 

 

父类代码:

public class Animal {
    public void shut(){
        System.out.println("我是小动物,我会叫");
    }
}

 

工厂类代码:

public class PetStore {//宠物类 --》工厂类
    public static Animal getPet(String PetName) {//多态的应用场合(二)
        Animal an = null;
        
        if("猫".equals(PetName)) {// PetName.equals("猫") 这样写容易出现空指针异常
            an = new Cat();
        }
        if ("猪".equals(PetName)) {
            an = new Pig();
        }
        return an;
        
    }
}

 

测试类:

 
public class Test {

    public static void main(String[] args) {
        Girl g = new Girl();

        Animal animal = PetStore.getPet("猫");
        g.play(animal);
    }

}

 


运行:

 

posted @ 2021-03-03 23:54  别看我看路  阅读(55)  评论(0编辑  收藏  举报