[设计模式之抽象工厂模式—— 家具工厂]
题目:
小明家新开了两个工厂用来生产家具,一个生产现代风格的沙发和椅子,一个生产古典风格的沙发和椅子,现在工厂收到了一笔订单,请你帮他设计一个系统,描述订单需要生产家具的信息。
输入描述
输入的第一行是一个整数 N(1 ≤ N ≤ 100),表示订单的数量。
接下来的 N 行,每行输入一个字符串,字符串表示家具的类型。家具类型分为 “modern” 和 “classical” 两种。
输出描述
对于每笔订单,输出字符串表示该订单需要生产家具的信息。
modern订单会输出下面两行字符串
modern chair
modern sofa
classical订单会输出下面两行字符串
classical chair
classical soft
输入示例
3
modern
classical
modern
输出示例
modern chair
modern sofa
classical chair
classical sofa
modern chair
modern sofa
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc= new Scanner(System.in);
int n=sc.nextInt();
for(int i=0;i<n;i++){
String name=sc.next();
if(name.equals("modern")){
FurnitureFactory sf=new ModernFactory();
Chair chair=sf.createChair();//调用两次是因为一种风格里具有两种家具
chair.show();
Sofa sofa=sf.createSofa();
sofa.dispaly();
} else if(name.equals("classical")){
FurnitureFactory sf=new ClassicalFactory();
Chair chair=sf.createChair();
chair.show();
Sofa sofa=sf.createSofa();
sofa.dispaly();
}
}
}
}
interface Chair{//抽象椅子接口
void show();
}
class ModernChair implements Chair{// 具体椅⼦--现代⻛
@Override
public void show(){
System.out.println("modern chair");
}
}
class ClassicalChair implements Chair{// 具体椅⼦--古典⻛
@Override
public void show(){
System.out.println("classical chair");
}
}
interface Sofa{//抽象沙发
void dispaly();
}
class ModernSofa implements Sofa{// 具体沙发--现代⻛
@Override
public void dispaly(){
System.out.println("modern sofa");
}
}
class ClassicalSofa implements Sofa{// 具体沙发--古典⻛
@Override
public void dispaly(){
System.out.println("classical sofa");
}
}
interface FurnitureFactory{// 抽象家居⼯厂,用于创造什么工厂
Chair createChair();//什么工厂那他的(返回)对象就是什么类型!
Sofa createSofa();
}
class ModernFactory implements FurnitureFactory{// 具体现代⻛格家居⼯⼚
@Override
public Chair createChair(){//有现代椅子
return new ModernChair();
}
@Override
public Sofa createSofa(){//也有现代沙发
return new ModernSofa();
}
}
class ClassicalFactory implements FurnitureFactory{//同理
@Override
public Chair createChair(){
return new ClassicalChair();
}
@Override
public Sofa createSofa(){
return new ClassicalSofa();
}
}