java设计模式总结之工厂模式

总体来说设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

1.工厂模式

1.1普通工厂模式

先创建一个接口:

public interface Animal {
    public void eat();
}

在创建实现类:

public class Cat implements Animal {
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}
public class Dog implements Animal {
    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }
}

 创建工厂:

public class AnimalFactory {

    public Animal create(String animal){
        if ("Cat".equalsIgnoreCase(animal)){
            return new Cat();
        }else if ("Dog".equalsIgnoreCase(animal)){
            return new Dog();
        }else {
            System.out.println("请输入正确类型");
            return null;
        }
    }
}

测试结果

public class FactoryTest {
    public static void main(String[] args) {
        AnimalFactory animalFactory = new AnimalFactory();
        Animal cat = animalFactory.create("cat");
        cat.eat();
    }
}

输出结果:猫吃鱼

1.2静态工厂模式

由工厂提供静态方法,来调用获取实例

创建工厂:

public class AnimalFactory {

   public static Animal createCat(){
       return new Cat();
   }

   public static Animal createDog(){
       return new Dog();
   }
}

测试:

public class FactoryTest {
    public static void main(String[] args) {
        Animal dog = AnimalFactory.createDog();
        dog.eat();
    }
}

最后输出结果为:狗吃肉

1.3抽象工厂模式

在添加新功能时,不需要修改原代码,通过实现工厂接口的方式来获取对象

创建一个工厂接口

public interface AbstractFactory {
    public Animal create();
}

创建工厂实现类

public class CatFactory implements AbstractFactory {
    @Override
    public Animal create() {
        return new Cat();
    }
}
public class DogFactory implements AbstractFactory {
    @Override
    public Animal create() {
        return new Dog();
    }
}

进行测试:

public class FactoryTest {
    public static void main(String[] args) {
        AbstractFactory catFactory = new CatFactory();
        Animal cat = catFactory.create();
        cat.eat();
    }
}

这个模式的好处:新增功能时,只需要一个工厂实现类实现工厂接口,和动物实现类就可以实现功能,不需要修改原代码,扩展性比较好

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值