工厂模式简单的说就是通过工厂来创建对象
public interface Phone { void make(); }
public class MiPhone implements Phone { public MiPhone() { this.make(); } @Override public void make() { // TODO Auto-generated method stub System.out.println("make xiaomi phone!"); } }
public class IPhone implements Phone { public IPhone() { this.make(); } @Override public void make() { // TODO Auto-generated method stub System.out.println("make iphone!"); } }
public class PhoneFactory { public Phone makePhone(String phoneType) { if(phoneType.equalsIgnoreCase("MiPhone")){ return new MiPhone(); } else if(phoneType.equalsIgnoreCase("iPhone")) { return new IPhone(); } return null; } }
和简单工厂模式中工厂负责生产所有产品相比,工厂方法模式将生成具体产品的任务分发给具体的产品工厂
public interface AbstractFactory { Phone makePhone(); }
public class XiaoMiFactory implements AbstractFactory{ @Override public Phone makePhone() { return new MiPhone(); } }
public class AppleFactory implements AbstractFactory { @Override public Phone makePhone() { return new IPhone(); } }
public interface PC { void make(); }
public class MiPC implements PC { public MiPC() { this.make(); } @Override public void make() { // TODO Auto-generated method stub System.out.println("make xiaomi PC!"); } }
public class MAC implements PC { public MAC() { this.make(); } @Override public void make() { // TODO Auto-generated method stub System.out.println("make MAC!"); } }
public interface AbstractFactory { Phone makePhone(); PC makePC(); }
public class XiaoMiFactory implements AbstractFactory{ @Override public Phone makePhone() { return new MiPhone(); } @Override public PC makePC() { return new MiPC(); } }
public class AppleFactory implements AbstractFactory { @Override public Phone makePhone() { return new IPhone(); } @Override public PC makePC() { return new MAC(); } }
原文:https://www.cnblogs.com/lzh66/p/13301486.html