设计模式--抽象工厂

意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类


                                            抽象工厂类图

·

/**
 * 
* @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();
	
}
}









猜你喜欢

转载自blog.csdn.net/yf289178199/article/details/80097487