这个抽象工厂模式相对较为复杂,我尽量写的简单点儿
这个模式一般用在生产不同种族的产品
//-------------抽象类-----------------------------------
public abstract class AmericaCar {
public String color = "黑色";
//不可以定制颜色,只有价格
public abstract void price();
public void seatNum(){
System.out.println("4个座位数");
}
}
public abstract class ChinaCar {
//价格
public abstract void price();
//可以定制颜色
public abstract void color();
public void wheelNum(){
System.out.println("6个轮胎");
}
}
//-------------------不同级别的子类----------------------------------
//A级别轿车美国
public class ALevelAmerica extends AmericaCar {
@Override
public void price() {
System.out.println("A级别美国制造-5百万");
}
}
//B级别轿车美国
public class BLevelAmerica extends AmericaCar {
@Override
public void price() {
System.out.println("B级别美国制造--1百万");
}
}
//A级别轿车中国
public class ALevelChina extends ChinaCar {
@Override
public void price() {
System.out.println("A级别中国制造--1千万");
}
@Override
public void color() {
System.out.println("红色");
}
}
//B级别轿车中国
public class BLevelChina extends ChinaCar {
@Override
public void price() {
System.out.println("B级别中国制造--7百万");
}
@Override
public void color() {
System.err.println("灰色");
}
}
//--------工厂接口----只为多态--------------------------------
public interface CarFactory {
AmericaCar createCarAmerica();
ChinaCar createCarChina();
}
//----------------------不同级别的工厂类------------------------------
//A级别轿车工厂
public class ALevelFactory implements CarFactory {
@Override
public AmericaCar createCarAmerica() {
return new ALevelAmerica();
}
@Override
public ChinaCar createCarChina() {
return new ALevelChina();
}
}
//B级别轿车工厂
public class BLevelFactory implements CarFactory {
@Override
public AmericaCar createCarAmerica() {
return new BLevelAmerica();
}
@Override
public ChinaCar createCarChina() {
return new BLevelChina();
}
}
//----------------测试类------------------------
public class FactoryTest {
public static void main(String[] args) {
//A级别工厂制造的汽车
CarFactory cFactory = new ALevelFactory();
AmericaCar aa = cFactory.createCarAmerica();
aa.price();
ChinaCar ac = cFactory.createCarChina();
ac.price();
//B工厂制造的汽车
BLevelFactory bFactory = new BLevelFactory();
AmericaCar ba = bFactory.createCarAmerica();
ChinaCar bc = bFactory.createCarChina();
ba.price();
bc.price();
}
}
“抽象工厂模式”好像是只为解决种族的划分,如果有不同见解,可以一起讨论 |
|