意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类
抽象工厂类图
·
/** * * @ClassName: IIcon * @Description: 图标接口 * @author 雨ゆこ * @date 2018年4月22日 * @version yuko1.0 */ public interface IIcon { void show(); }
/**
*
* @ClassName: IProtocol
* @Description: 协议接口
* @author 雨ゆこ
* @date 2018年4月22日
* @version yuko1.0
*/
public interface IProtocol {
void communication();
}
/** * * @ClassName: VirtualDeviceFactory * @Description: 抽象工厂接口 * @author 雨ゆこ * @date 2018年4月22日 * @version yuko1.0 */ public interface VirtualDeviceFactory { IIcon createIcon(); IProtocol createIProtocol(); }
/** * * @ClassName: MiIcon * @Description: 图标实现类 * @author 雨ゆこ * @date 2018年4月22日 * @version yuko1.0 */ public class MiIcon implements IIcon{ public void show() { System.out.println("miIcon 展示"); } }
/** * * @ClassName: FlatIcon * @Description: 图标实现类 * @author 雨ゆこ * @date 2018年4月22日 * @version yuko1.0 */ public class FlatIcon implements IIcon{ public void show() { System.out.println("FlatIcon 展示"); } }
/** * * @ClassName: MiProtocol * @Description: 协议实现类 * @author 雨ゆこ * @date 2018年4月22日 * @version yuko1.0 */ public class MiProtocol implements IProtocol{ public void communication() { System.out.println("MiProtocol 协议"); } }
/** * * @ClassName: ISOProtocol * @Description: 协议实现 * @author 雨ゆこ * @date 2018年4月22日 * @version yuko1.0 */ public class ISOProtocol implements IProtocol { public void communication() { System.out.println("ISOProtocol 协议"); } }
/** * * @ClassName: MVD * @Description: 抽象工厂实现类 * @author 雨ゆこ * @date 2018年4月22日 * @version yuko1.0 */ public class MVD implements VirtualDeviceFactory{ public IIcon createIcon() { return new MiIcon(); } public IProtocol createIProtocol() { return new MiProtocol(); } }
/** * * @ClassName: IVD * @Description: 抽象工厂实现类 * @author 雨ゆこ * @date 2018年4月22日 * @version yuko1.0 */ public class IVD implements VirtualDeviceFactory{ public IIcon createIcon() { return new FlatIcon(); } public IProtocol createIProtocol() { return new ISOProtocol(); } }
/** * * @ClassName: YuFan * @Description: 工厂调用测试类 * @author 雨ゆこ * @date 2018年4月26日 * @version yuko1.0 */ public class YuFan { public static void main(String[] args) { VirtualDeviceFactory v = new MVD(); v.createIcon().show(); v.createIProtocol().communication(); VirtualDeviceFactory ivd = new IVD(); ivd.createIcon().show(); ivd.createIProtocol().communication(); } }