一:简单工厂的模式
public abstract class Animal {
public abstract String getName();
}
class Cat extends Animal{
@Override
public String getName() {
return "我是一只猫~~";
}
}
class Dog extends Animal{
@Override
public String getName() {
return "我是一只汪汪~~";
}
}
class SimpleFactory{
public static Animal instance(String type){
switch (type){
case "dog":return new Dog();
case "cat":return new Cat();
default:return null;
}
}
public static void main(String[] args) {
Animal animal= instance("dog");
System.out.println(animal.getName());
}
}
二:工厂方法设计模式
public abstract class Animal {
public abstract String getName();
}
class Cat extends Animal{
@Override
public String getName() {
return "我是一只猫~~";
}
}
class Dog extends Animal{
@Override
public String getName() {
return "我是一只汪汪~~";
}
}
public abstract class AnimalFactory{
public abstract Animal createAnimal();
}
public class CatFactory implements AnimalFactory {
@Override
public Animal createAnimal() {
return new Cat();
}
}
public class DogFactory implements AnimalFactory {
@Override
public Animal createAnimal() {
return new Dog();
}
}
public static void main(String[] args) {
DogFactory dog=new DogFactory();
Dog dogs=(Dog)dog.createAnimal();
CatFactory cat=new CatFactory();
Cat cats=(Cat)cat.createAnimal();
}
三:抽象工厂设计模式
抽象工厂和工厂方法的模式基本一样,区别在于,工厂方法是生产一个具体的产品,而抽象工厂可以用来生产一组相同,有相对关系的产品;重点在于一组,一批,一系列
public abstract class Animal {
public abstract String getName();
}
class Cat extends Animal{
@Override
public String getName() {
return "我是一只猫~~";
}
}
class Dog extends Animal{
@Override
public String getName() {
return "我是一只汪汪~~";
}
}
public abstract class Person {
public abstract String getName();
}
class XM extends Person{
@Override
public String getName() {
return "我是小明~~";
}
}
class XL extends Person{
@Override
public String getName() {
return "我是小丽~~";
}
}
public interface PersonAnimalFactory {
Person getPerson();
Animal getAnimal();
}
public class XiaoMCatFactory implements PersonAnimalFactory {
@Override
public Person getPerson() {
return new XM();
}
@Override
public Animal getAnimal() {
return new Cat();
}
}
public class XiaoLDogFactory implements PersonAnimalFactory {
@Override
public Person getPerson() {
return new XL();
}
@Override
public Animal getAnimal() {
return new Dog();
}
}