设计模式(2)工厂模式

简介: 设计模式(2)工厂模式

这次主要是讲一些关于设计模式里面抽象工厂部分的内容,首先,先摆上一个实例来说

接下来是相应的代码部分:


首先是相应的实体类部分,


零食基类:


package com.sise.工厂模式.抽象工程模式;
public abstract class Snack {
    public String name;
    public double price;
    public Snack(){
    }
    public Snack(String name, double price) {
        this.name = name;
        this.price = price;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    @Override
    public String toString() {
        return "Snack{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}
复制代码


\

\

吃的零食类:


package com.sise.工厂模式.抽象工程模式;
//吃的零食
public class EatSnack extends Snack{
    public EatSnack(){
        super();
    }
    public String toString(){
        return super.toString();
    }
} 
喝的零食类:
package com.sise.工厂模式.抽象工程模式;
//喝的零食
public class DrinkSnack extends Snack{
    public DrinkSnack(){
        super();
    }
    public String toString(){
        return super.toString();
    }
}
复制代码


\

辣条类:


package com.sise.工厂模式.抽象工程模式;
public class SpicyStrip extends Snack {
    public SpicyStrip(){
        super();
    }
    public String toString(){
        return super.toString();
    }
}
工厂接口:
package com.sise.工厂模式.抽象工程模式;
public interface SnackFactory {
    public Snack createSnack();
}
零食工厂
package com.sise.工厂模式.抽象工程模式;
public class EatSnackFactory implements SnackFactory {
    @Override
    public EatSnack createSnack() {
        EatSnack es=new EatSnack();
        es.setName("薯片");
        es.setPrice(66.5);
        return es;
    }
}
复制代码


\

饮料工厂


package com.sise.工厂模式.抽象工程模式;
public class DrinkSnackFactory implements SnackFactory {
    @Override
    public DrinkSnack createSnack() {
        DrinkSnack ds=new DrinkSnack();
        ds.setName("可乐");
        ds.setPrice(166);
        return ds;
    }
}
复制代码


\

辣条工厂


package com.sise.工厂模式.抽象工程模式;
public class SpicyStripFactory implements SnackFactory {
    @Override
    public Snack createSnack() {
            SpicyStrip spicyStrip=new SpicyStrip();
            spicyStrip.setName("辣条");
            spicyStrip.setPrice(2.5);
            return spicyStrip;
    }
}
复制代码


最后关于测试部分的代码如下所示:


package com.sise.工厂模式.抽象工程模式;
public class test {
    public static void main(String[] args) {
        SnackFactory eatSnackFactory=new EatSnackFactory();
        SnackFactory drinkFactory=new DrinkSnackFactory();
        EatSnack es= (EatSnack) eatSnackFactory.createSnack();
        System.out.println(es.toString());
        DrinkSnack ds= (DrinkSnack) drinkFactory.createSnack();
        System.out.println(ds.toString());
    }
}
复制代码


一个基本的抽象工厂模式的demo就搭建好了。


不得不说,设计模式里面,最常用的模式之一就是工厂模式了,虽然很多时候我们都知道工厂模式是一个方便于开发者用来进行相应的对象生产的一种设计模式,但是我们对于其内容进行深入研究之后会发现工厂模式里面具有一定的优缺点。


优点: 对于抽象工厂模式来说最大的一个优点应该就是封装性了,对于外键调用来说,我们大可不必要去知道该如何产生相应的内容,因为工厂内部都已经帮我们封装好了,我们只需要调用即可。


缺点: 对于纵向的扩展是比较困难的,但是对于横向的扩展是比较适合的。例如说,我有一个零食工厂,专门用于生产吃的零食和喝的零食两个类型。对于这种情况而言,我们开设了两个工厂,一个是DrinkSnackFactory,另外一个是EatSnackFactory,均实现了SnackFactory工厂。假如说后边要添加业务,我们需要增设一个新的业务,例如说添加卖油盐类产品,则需要再设计一个抽象工厂,然后分别设计其接口的实现类。这样就会非常地复杂。(这一种情况,我称呼之为纵向扩展)。但是假若说我们后期的业务只是需要添加一个生产辣条类的工厂时,可以新设一个SpicystripFactory实现一个SnackFactory接口即可了。

\

目录
相关文章
|
8月前
|
设计模式 存储 Java
设计模式-工厂模式
设计模式-工厂模式
75 1
|
8月前
|
设计模式
设计模式【二】:工厂模式
设计模式【二】:工厂模式
49 0
|
设计模式 Java
设计模式~工厂模式-03
工厂模式 简单工厂模式 优点: 缺点: 工厂方法模式
57 0
|
8月前
|
设计模式 消息中间件 Java
设计模式之工厂模式(C++)
设计模式之工厂模式(C++)
97 0
|
8月前
|
设计模式 前端开发 API
【设计模式】之工厂模式
工厂模式是一种常用的创建对象的设计模式,它通过封装对象的创建逻辑,提供统一的接口,实现了代码的解耦和可扩展性。在实际开发中,可以根据具体需求选择是否使用工厂模式来创建对象。工厂模式可以应用于任何需要创建对象的场景。通过使用工厂模式,我们可以提高代码的可维护性、可扩展性和可测试性,使得代码更加灵活和易于理解。
82 0
|
设计模式 Java C#
设计模式之工厂模式(2)
接着,我们定义一个抽象工厂类AbstractFactory,它有两个抽象方法createShape和createColor,分别返回一个Shape对象和一个Color对象: java
60 0
|
设计模式 前端开发 Java
设计模式之工厂模式(1)
工厂模式是一种对象创建型模式,它提供了一种创建对象的最佳实践。在工厂模式中,我们在创建对象时不使用 new 关键字,而是通过调用工厂方法来创建对象。工厂方法是一种在子类中定义的方法,该方法负责实例化对象。工厂方法可以返回不同的对象类型,因此工厂模式可以创建一组相关或不相关的对象。这样就可以将对象的创建和使用解耦。
74 0
|
设计模式
设计模式之工厂模式
设计模式之工厂模式
71 0
|
设计模式 SQL 搜索推荐
设计模式之工厂模式(二)
设计模式之工厂模式
116 0
|
设计模式 消息中间件 Java
一起来学设计模式之工厂模式
前言 目前正在出一个设计模式专题系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~ 本节给大家讲一下设计模式中的工厂模式~ 本专题的所有案例代码主要以Java语言为主, 好了, 废话不多说直接开整吧~ 工厂模式 工厂模式是一种常用的设计模式,它提供了一种创建对象的方式,该方式隐藏了对象创建的细节并提供了一个通用的接口,从而使得代码更加灵活和可扩展。在工厂模式中,我们将对象的创建过程封装到一个工厂类中,通过工厂类来创建具体的对象,这样客户端就不需要关心对象的创建过程,只需要调用工厂类提供的接口来获取所需的对象即可。