Answer:
Answer:
Automobile Packages:
TestFactory.java
package AutoFactory;
public class TestFactory {
public static void main(String[] args) {
AutoStore asiaStore = new AsiaStore();
AutoStore northAmericaStore = new NorthAmericaStore();
AutoStore europeStore = new EuropeStore();
//create asiaStore auto
Automobile auto = asiaStore.createAuto("Toyota");
auto.printMarkModel();
auto = asiaStore.createAuto("Subaru");
auto.printMarkModel();
//create europeStore auto
auto = europeStore.createAuto("Toyota");
auto.printMarkModel();
auto = europeStore.createAuto("Subaru");
auto.printMarkModel();
//create northAmericaStore auto
auto = northAmericaStore.createAuto("Toyota");
auto.printMarkModel();
auto = northAmericaStore.createAuto("Subaru");
auto.printMarkModel();
}
}
AsiaStore.java
package AutoFactory;
public class AsiaStore extends AutoStore {
//method return object type Automobile
Automobile createAuto(String mark) {
Automobile auto = null;
if (mark.equals("Toyota")) {
auto = new AsiaToyota();//create AsiaToyota auto
} else if (mark.equals("Subaru")) {
auto = new AsiaSubaru();//create AsiaSubaru auto
}
return auto;//return auto
}
}
AutoStore.java
package AutoFactory;
public abstract class AutoStore {
abstract Automobile createAuto(String mark);//create and return object Automobile
}
Automobile.java
package AutoFactory;
import java.util.ArrayList;
abstract class Automobile {
String mark;//mark auto
String model;//model auto
String price;//price auto
ArrayList<String> luxuryBundle = new ArrayList<>();//list luxury bundle
ArrayList<String> performanceBundle = new ArrayList<>();//list performance bundle
abstract void printMarkModel();//print information
}
EuropeStore.java
package AutoFactory;
public class EuropeStore extends AutoStore {
//method return object type Automobile
Automobile createAuto(String mark) {
Automobile auto = null;
if (mark.equals("Toyota")) {
auto = new EuropeToyota();//create EuropeToyota auto
} else if (mark.equals("Subaru")) {
auto = new EuropeSubaru();//create EuropeSubaru auto
}
return auto;//return auto
}
}
EuropeToyota.java
package AutoFactory;
public class EuropeToyota extends Automobile {
//set all information about auto
public EuropeToyota() {
mark = "Toyota";
model = "Camry";
price = "$7000";
luxuryBundle.add("Upgrades radio");
luxuryBundle.add("Aluminium wheels");
luxuryBundle.add("Sunroof");
performanceBundle.add("Aluminium wheels");
}
//print all information
void printMarkModel() {
System.out.println("Mark: " + mark + " ,Model: " + model + " , Price: " + price);
}
}
EuropeSubaru.java
package AutoFactory;
public class EuropeSubaru extends Automobile{
//set all information about auto
public EuropeSubaru() {
mark = "Subaru";
model = "Impreza";
price = "$6000";
luxuryBundle.add("Upgrades radio");
luxuryBundle.add("Sunroof");
performanceBundle.add("Aluminium wheels");
}
//print all information
void printMarkModel() {
System.out.println("Mark: " + mark + " ,Model: " + model + " , Price: " + price);
}
}
AsiaToyota.java
package AutoFactory;
public class AsiaToyota extends Automobile{
//set all information about auto
public AsiaToyota() {
mark = "Toyota";
model = "Camry";
price = "$10000";
luxuryBundle.add("Upgrades radio");
luxuryBundle.add("Aluminium wheels");
luxuryBundle.add("Sunroof");
performanceBundle.add("Aluminium wheels");
}
//print all information
void printMarkModel() {
System.out.println("Mark: " + mark + " ,Model: " + model + " , Price: " + price);
}
}
AsiaSubaru.java
package AutoFactory;
public class AsiaSubaru extends Automobile {
//set all information about auto
public AsiaSubaru() {
mark = "Subaru";
model = "Impreza";
price = "$13000";
luxuryBundle.add("Upgrades radio");
luxuryBundle.add("Sunroof");
performanceBundle.add("Aluminium wheels");
}
//print all information
void printMarkModel() {
System.out.println("Mark: " + mark + " ,Model: " + model + " , Price: " + price);
}
}
NorthAmericaStore.java
package AutoFactory;
public class NorthAmericaStore extends AutoStore {
//method return object type Automobile
Automobile createAuto(String mark) {
Automobile auto = null;
if (mark.equals("Toyota")) {
auto = new NorthAmericaToyota();//create NorthAmericaToyota auto
} else if (mark.equals("Subaru")) {
auto = new NorthAmericaSubaru();//create NorthAmericaSubaru auto
}
return auto;//return auto
}
}
NorthAmericaToyota.java
package AutoFactory;
public class NorthAmericaToyota extends Automobile{
//set all information about auto
public NorthAmericaToyota() {
mark = "Toyota";
model = "Camry";
price = "$8000";
luxuryBundle.add("Upgrades radio");
luxuryBundle.add("Sunroof");
performanceBundle.add("Aluminium wheels");
}
//print all information
void printMarkModel() {
System.out.println("Mark: " + mark + " ,Model: " + model + " , Price: " + price);
}
}
NorthAmericaSubaru.java
package AutoFactory;
public class NorthAmericaSubaru extends Automobile{
//set all information about auto
public NorthAmericaSubaru() {
mark = "Subaru";
model = "Impreza";
price = "$12000";
luxuryBundle.add("Upgrades radio");
luxuryBundle.add("Aluminium wheels");
performanceBundle.add("Sunroof");
}
//print all information
void printMarkModel() {
System.out.println("Mark: " + mark + " ,Model: " + model + " , Price: " + price);
}
}
Output: