概念
定义一个接口,用来创建相关或依赖的对象家族,而不需要指明具体类。
实例
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 手机膜