抽象工厂

来源:互联网 发布:网络推手阿建排第一 编辑:程序博客网 时间:2024/06/01 08:51

概念

定义一个接口,用来创建相关或依赖的对象家族,而不需要指明具体类。

图片来自网络

实例
IPhoneStore、WPhoneStore实现同一接口PhoneStore

public interface PhoneStore { public abstract Phone orderPhone(); public abstract PhoneFilm orderPhoneFilm();}public class IPhoneStore implements PhoneStore {    public Phone orderPhone() {        return new IPhone();    }    public PhoneFilm orderPhoneFilm() {        return new IPhoneFilm();    }}public class WPhoneStore implements PhoneStore {    public Phone orderPhone() {        return new WPhone();    }    public PhoneFilm orderPhoneFilm() {        return new WPhoneFilm();    }}

IPhone、WPhone继承Phone抽象类

public abstract class Phone {    private String name; Phone(String name) {        this.name = name;    } public void printInfo() {        System.out.println(name);    }}public class IPhone extends Phone {    IPhone() {        super("iphone");    }}public class WPhone extends Phone {    WPhone() {        super("WindowsPhone");    }}

IPoneFilm、WPoneFilm继承PhoneFile抽象类

public abstract class PhoneFilm {    private String name;    PhoneFilm(String name) {        this.name = name;    }    public void printInfo() {        System.out.println(name);    }}public class IPhoneFilm extends PhoneFilm {    IPhoneFilm() {        super("iphone 手机膜");    }}public class WPhoneFilm extends PhoneFilm {    WPhoneFilm() {        super("windows phone 手机膜");    }}

测试代码

public class PhoneTest {    public static void buyPhone(PhoneStore phoneStore)    {        System.out.println("买手机送手机膜");        Phone phone=phoneStore.orderPhone();        PhoneFilm phoneFilm=phoneStore.orderPhoneFilm();                phone.printInfo();        phoneFilm.printInfo();    }    public static void main(String[] args) {        buyPhone(new IPhoneStore());        buyPhone(new WPhoneStore());    }}

测试结果

买手机送手机膜
iphone
iphone 手机膜
买手机送手机膜
WindowsPhone
windows phone 手机膜

0 0