设计模式——工厂模式

亡梦爱人 提交于 2019-11-29 22:15:24

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();
    }
}

抽象工厂,无非就是添加多个产品。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!