欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

设计模式代码实践 - 生成器模式

最编程 2024-04-20 07:13:54
...
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("mountain")){ Builder builder=new MountainBuilder(); Director director=new Director(builder); director.Construct("Aluminum Frame","Knobby Tires"); Bike bike=builder.getResult(); bike.getProperties(); }else if(s.equals("road")){ Builder builder=new RoadBuilder(); Director director=new Director(builder); director.Construct("Carbon Frame","Slim Tires"); Bike bike=builder.getResult(); bike.getProperties(); } } } } interface Bike{ void setFrame(String frame); void setTires(String tires); void getProperties(); } class MountainBike implements Bike{ String frame; String tires; public void setFrame(String frame){ this.frame=frame; } public void setTires(String tires) { this.tires = tires; } public void getProperties(){ System.out.println(this.frame+" "+this.tires); } } class RoadBike implements Bike{ String frame; String tires; public void setFrame(String frame){ this.frame=frame; } public void setTires(String tires) { this.tires = tires; } public void getProperties(){ System.out.println(this.frame+" "+this.tires); } } interface Builder{ void buildFrame(String frame); void buildTires(String tries); Bike getResult(); } class RoadBuilder implements Builder{ private RoadBike roadBike=new RoadBike(); @Override public void buildFrame(String frame) { roadBike.frame=frame; } @Override public void buildTires(String tries) { roadBike.tires=tries; } @Override public Bike getResult() { return roadBike; } } class MountainBuilder implements Builder{ private MountainBike mountainBike=new MountainBike(); @Override public void buildFrame(String frame) { mountainBike.frame=frame; } @Override public void buildTires(String tries) { mountainBike.tires=tries; } @Override public Bike getResult() { return mountainBike; } } class Director{ private Builder builder=null; public Director(Builder builder){ this.builder=builder; } public void Construct(String frame,String tries){ builder.buildFrame(frame); builder.buildTires(tries); } }

推荐阅读