设计模式-工厂模式

本文介绍了工厂模式,一种用于对象创建的创建型模式,它隐藏了对象创建的复杂性,提供了一种解耦的方式。简单工厂模式适合对象创建较少的情况,但违反了开闭原则。工厂方法模式提高了拓展性,而抽象工厂模式则更适用于需要一组相关或相互依赖对象的场景,但也存在增加类时需修改代码的问题。
摘要由CSDN通过智能技术生成

1.简介:工厂模式属于创建型模式,主要用于对象的创建。工厂模式不会对客户暴露创建逻辑,并且是通过一个共同的接口来指向新创建的对象

2.分类:

  • 简单工厂模式
  • 工厂方法模式
  • 抽象工厂模式

3.优点:

  • 解耦:对象的创建和使用分离
  • 复用性高:对于创建对象复杂,使用频率较高的对象,通过工厂模式,提高代码复用性

4.简单工厂模式:简单工厂模式违背了开闭原则

        4.1 使用场景:创建对象较少,客户无需注重对象创建过程

        4.2 优点:用户获取对象简单

        4.3 缺点:违背开闭原则,每增加一个类都需要修改工厂类

public interface Animal{

}

public class Dog implements Animal{

    public Dog(){
        System.out.print("dog create!");
    }
}

public class Cat implements Animal{

    public Dog(){
        System.out.print("cat create!");
    }
}

public class AnimalFactory{

    public Animal getAnimal(String animalType){

        if(animalType.equalsIgnoreCase("DOG")){
            return new Dog();
        }

        if(animalType.equalsIgnoreCase("CAT")){
            return new Cat();
        }
    }
    return null;
}

5.工厂方法模式

        5.1 使用场景:

  • 无需知道类,只需要知道具体类的工厂类
  • 将对象创建委托给具体工厂,也可以动态指定工厂          

        5.2 工厂方法模式与普通工厂模式对比

                1.当需要组合其他类对象作为初始操作时,使用工厂方法模式。

                2.简单工厂模式会将所有类的创建集中在一个工厂类中,从而使工厂类较为复杂

        5.3 优点

                1.拓展性高。

                2.对调用者屏蔽。

        5.4 缺点

                1.增加具体类时,需要增加工厂类,增加了系统复杂度

public interface Animal{

}

public class Dog implements Animal{

    public Dog(){
        System.out.print("dog create!");
    }
}

public class Cat implements Animal{

    public Dog(){
        System.out.print("cat create!");
    }
}

public interface AnimalFactory{

    public Animal getAnimal();
}

public class DogFactory implements AnimalFactory{
    public Animal getAnimal(){
        return new Dog();
    }
}

public class CatFactory implements AnimalFactory{
    public Animal getAnimal(){
        return new Cat();
    }
}

public static void main(String[] args){
    AnimalFactory dog = new DogFactory();
    AnimalFactory cat = new CatFactory();
    dog.getAnimal();//create Dog
    cat.getAnimal();//create Cat
}

6.抽象工厂模式

        6.1 抽象工厂模式是对工厂模式的进一步深化。

        6.2 优点:扩展性高,可通过一组对象实现某个功能
        6.3 缺点:一旦新增类就需要修改原有代码,不符合开闭原则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值