- Define an interface for creating an object
- Let the sub-classes decide what class to instantiate
- Virtual constructor
Different Phones have different OS.
public interface OS {
public void spec();
}
public class Android implements OS {
public void spec() {
// ...
}
}
public class Ios implements OS {
public void spec() {
// ...
}
}
public class Windows implements OS {
public void spec() {
// ...
}
}
public class Usual {
public static void main(String a[]) {
OS obj = new Windows();
// The client will know what classes you are using
obj.spec();
}
}
public class OSFactory {
public OS getInstance(String str) {
if (str.equals("1")
return new Android();
else if (str.equals("2")
return new Ios();
else
return new Windows();
}
}
public class FactoryMain() {
public static void main(String a[]) {
OSFactory fac = new OSFactory();
OS obj = fac.getInstance('1');
obj.spec();
}
}