/**
* @author beck.yang
* @date 2022/6/27 18:40
* @description
*/
public class Main {
public static void main(String[] args) {
PetFactory catFactory = new CatFactory();
Pet cat = catFactory.createPet();
cat.eat();
PetFactory dogFactory = new DogFactory();
Pet dog = dogFactory.createPet();
dog.eat();
}
}
/**
* @author beck.yang
* @date 2022/6/27 19:27
* @description
*/
public abstract class PetFactory {
public abstract <T extends Pet> T createPet();
}
/**
* @author beck.yang
* @date 2022/6/27 18:29
* @description 宠物工厂-猫工厂
*/
public class CatFactory extends PetFactory {
@Override
public <T extends Pet> T createPet(){
return (T) new Cat();
}
}
/**
* @author beck.yang
* @date 2022/6/27 18:29
* @description 宠物工厂-狗狗工厂
*/
public class DogFactory extends PetFactory {
@Override
public <T extends Pet> T createPet(){
return (T) new Dog();
}
}
/**
* @author beck.yang
* @date 2022/6/27 18:34
* @description 宠物类
*/
public class Pet {
public void eat(){
System.out.println("Pet eat...");
}
}
/**
* @author beck.yang
* @date 2022/6/27 18:29
* @description 猫
*/
public class Cat extends Pet {
@Override
public void eat() {
System.out.println("Cat eat...");
}
}
/**
* @author beck.yang
* @date 2022/6/27 18:29
* @description 狗
*/
public class Dog extends Pet {
@Override
public void eat() {
System.out.println("Dog eat...");
}
}