java 工厂设计模式

一:简单工厂的模式

//动物的抽象类
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;
        }

    }
    //main方法测试
     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();
    }
}

//main方法测试
     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();//6寸大屏
    }
}

//小丽家的狗
public class XiaoLDogFactory implements PersonAnimalFactory {
    @Override
    public Person getPerson() {
        return new XL();//高性能处理器
    }

    @Override
    public Animal getAnimal() {
        return new Dog();//6寸大屏
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值