抽象工厂方法
/** * 抽象工厂方法:抽象工厂方法是在普通工厂方法上进行扩展的,普通工厂每个工厂类只会生产一种产品,例如富士康只生产iphone,而抽象工厂就是 * 一个工厂可以生产多种产品,例如,富士康可以生产苹果手机,也可以生产苹果耳机 * 该模式特点:1.有多种产品的接口以及对应的实现类(如手机接口,实现类为苹果手机和小米手机,耳机接口(实现类为苹果耳机和小米手机) * 2.有一个工厂接口和对应的实现类,如手机生产工厂接口,实现类纬创工厂,富士康工厂 * 2.每个工厂类,具有同时生产多种产品的方法,例如富士康工厂,生产苹果手机和苹果耳机 */ //创建手机接口 public interface Phone { void call(); } //苹果手机对象 public class Iphone implements Phone { @Override public void call() { System.out.println("使用苹果手机打电话"); } } //小米手机 public class MIPhone implements Phone { @Override public void call() { System.out.println("使用小米手机打电话"); } } //耳机接口 public interface Earphone { void listenMusic(); } //苹果耳机 public class AppleEarphone implements Earphone { @Override public void listenMusic() { System.out.println("用苹果耳机听音乐"); } } //小米耳机 public class MiEarPhone implements Earphone { @Override public void listenMusic() { System.out.println("使用小米耳机听音乐"); } } //工厂接口 public interface PhoneFactory { //生产手机 Phone createPhone(); //生产耳机 Earphone createEarphone(); } //生产苹果手机的工厂,如富士康 public class IPhoneFactory implements PhoneFactory { //生产苹果手机 @Override public Phone createPhone() { return new Iphone(); } //生产苹果耳机 @Override public Earphone createEarphone() { return new AppleEarphone(); } } //生产小米手机的工厂如纬创 public class MiPhoneFactory implements PhoneFactory { //生产小米手机 @Override public Phone createPhone() { return new MIPhone(); } //生产小米耳机 @Override public Earphone createEarphone() { return new MiEarPhone(); } } class test2{ public static void main(String[] args) { //创建苹果手机和耳机 PhoneFactory iPhoneFactory = new IPhoneFactory(); iPhoneFactory.createPhone().call(); iPhoneFactory.createEarphone().listenMusic(); //创建小米手机和耳机 PhoneFactory miPhoneFactory = new MiPhoneFactory(); miPhoneFactory.createPhone().call(); miPhoneFactory.createEarphone().listenMusic(); } }