抽象工厂模式(AbstractFactory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
抽象工厂模式Demo:
/** * 2018年3月29日下午10:06:01 */ package com.Designpattern; /** * @author xinwenfeng * */ public class TestAbstractFactory { /** * @param args */ public static void main(String[] args) { AbstractFactory af = new Factory_H(); af.createLight(); af.createTelevision(); af = new Factory_L(); af.createLight(); af.createTelevision(); } } interface AbstractLight{//抽象灯具 } interface AbstractTelevision{//抽象电视 } interface AbstractFactory{//抽象工厂 public AbstractLight createLight(); public AbstractTelevision createTelevision(); } class Light_H implements AbstractLight{//高级灯具 public Light_H() { System.out.println("构造了一个LED灯"); } } class Light_L implements AbstractLight{//低级灯具 public Light_L() { System.out.println("构造了一个白炽灯"); } } class Television_H implements AbstractTelevision{//高级电视机 public Television_H() { System.out.println("构造了一台液晶电视机"); } } class Television_L implements AbstractTelevision{//低级电视机 public Television_L() { System.out.println("构造了一台黑白电视机"); } } class Factory_H implements AbstractFactory{//高级工厂,生产高级物品 public Factory_H() { System.out.println(" >使用高级工厂"); } @Override public AbstractLight createLight() { return new Light_H(); } @Override public AbstractTelevision createTelevision() { return new Television_H(); } } class Factory_L implements AbstractFactory{//低级工厂,生产低级物品 public Factory_L() { System.out.println(" >使用低级工厂"); } @Override public AbstractLight createLight() { return new Light_L(); } @Override public AbstractTelevision createTelevision() { return new Television_L(); } }
结果: