1:工厂模式:简单一句话,就是生产类的。
2:分类:简单工厂、工厂模式、抽象工厂
3:代码
简单工厂
//定义运动类接口public interface Sport {
public String getName();
}
//实现一个足球的类public class FootballSport implements Sport {
@Override
public String getName() {
return "我的名字叫足球";
}
}
//实现一个篮球的类public class BasketballSport implements Sport {
@Override
public String getName() {
return "我的名字叫篮球";
}
}
//测试简单工厂public class SimpleFactory {
public static void main(String[] args) {
String name ="basket";
Sport sport = null;
if (name.equals("foot")){
sport = new FootballSport();
}else if (name.equals("basket")){
sport = new BasketballSport();
}
if (sport!=null){
String sname = sport.getName();
System.out.println(sname);
}
}
}
缺点:每次添加新的实现类,都需要修改代码。违背了开闭原则。
工厂模式
//新增一个运动工厂类public interface SportFactory {
Sport sport();
}
//足球工厂类,返回足球运动的类public class FootballSportFactory implements SportFactory {
@Override
public Sport sport() {
return new FootballSport();
}
}
//篮球工厂类,返回篮球运动的类public class BasketballSportFactory implements SportFactory {
@Override
public Sport sport() {
return new BasketballSport();
}
}
缺点:当添加一个运动的时候,需要添加工厂类,代码容易臃肿,不好维护。
抽象工厂模式
public interface AbstractFactory {
Sport sport();
Person person();
}
public class FootballAbstrFactory implements AbstractFactory {
@Override
public Sport sport() {
return new FootballSport();
}
@Override
public Person person() {
return new RonaldoPerson();
}
}
public class BasketAbstrFactory implements AbstractFactory {
@Override
public Sport sport() {
return new BasketballSport();
}
@Override
public Person person() {
return new KobePerson();
}
}
抽象工厂,无非就是添加多个产品。