自学内容网 自学内容网

设计模式代码实战-抽象工厂模式

1、问题描述

小明家新开了两个工厂用来生产家具,一个生产现代风格的沙发和椅子,一个生产古典风格的沙发和椅子,现在工厂收到了一笔订单,请你帮他设计一个系统,描述订单需要生产家具的信息。

输入试例:
3
modern
classical
modern

2、抽象工厂模式

在⼯⼚⽅法模式中,每个具体⼯⼚只负责创建单⼀的产品。但是如果有多类产品
呢,⽐如说“⼿机”,⼀个品牌的⼿机有⾼端机、中低端机之分,这些具体的产品都需要建⽴⼀个单独的⼯⼚类,但
是它们都是相互关联的,都共同属于同⼀个品牌,这就可以使⽤到【抽象⼯⼚模式】

作者认为,就是将具有某个共同特性的产品,统一交给某种工厂来创建,避免每个产品都要一个新工厂来生成。
在这里插入图片描述

3、代码

该题的统一特性为现代和经典,所以分为现代工厂和经典工厂

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int number=sc.nextInt();
        sc.nextLine();

        for(int i=0;i<number;i++){

            String s=sc.nextLine();
            if(s.equals("modern")){
                Factory modernFactory=new ModernFactory();
                Desk modernDesk=modernFactory.createProductDesk();
                Sofa modernSofa=modernFactory.createProductSofa();
                modernDesk.display();
                modernSofa.display();
            }else if(s.equals("classical")){
                Factory classicalFactory=new ClassicalFactory();
                Desk classicalDesk=classicalFactory.createProductDesk();
                Sofa classicalSofa=classicalFactory.createProductSofa();
                classicalDesk.display();
                classicalSofa.display();
            }


        }
    }
}
interface Sofa{
    void display();
}

interface Desk{
    void display();
}

class ModernSofa implements Sofa{

    @Override
    public void display() {
        System.out.println("modern sofa");
    }
}

class ClassicSofa implements Sofa{

    @Override
    public void display() {
        System.out.println("classical sofa");
    }
}

class ModernDesk implements Desk {


    @Override
    public void display() {
        System.out.println("modern chair");
    }
}

class ClassicDesk implements Desk{

    @Override
    public void display() {
        System.out.println("classical chair");
    }
}

interface Factory{
    Desk createProductDesk();
    Sofa createProductSofa();
}

class ModernFactory implements Factory{

    @Override
    public ModernDesk createProductDesk() {
        return new ModernDesk();
    }

    @Override
    public ModernSofa createProductSofa() {
        return new ModernSofa();
    }


}

class ClassicalFactory implements Factory{

    @Override
    public ClassicDesk createProductDesk() {
        return new ClassicDesk();
    }

    @Override
    public ClassicSofa createProductSofa() {
        return new ClassicSofa();
    }


}

原文地址:https://blog.csdn.net/vince1998/article/details/137680427

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!