设计模式-创建型模式-抽象工厂方法
定义
工厂的工厂,主要面对的对象为产品族
uml
代码
package abstractfactory;
/**
* @author mrhy
* @date 2021/1/4 13:54
* Copyright (C), 2018-2021
*/
public class Customer {
public static void main(String[] args) {
MiFactory miFactory = new MiFactory();
Phone phone = miFactory.getPhone();
phone.open();
phone.close();
phone.sendMsg();
phone.call();
Router router = miFactory.getRouter();
router.open();
router.close();
router.sendSgn();
HuaweiFactory huaweiFactory = new HuaweiFactory();
Phone phone2 = huaweiFactory.getPhone();
phone2.open();
phone2.close();
phone2.sendMsg();
phone2.call();
Router router2 = huaweiFactory.getRouter();
router2.open();
router2.close();
router2.sendSgn();
}
}
package abstractfactory;
/**
* @author mrhy
* @date 2021/1/4 13:53
* Copyright (C), 2018-2021
*/
public class HuaweiFactory implements IFactory {
@Override
public Phone getPhone() {
return new HuaweiIPhone();
}
@Override
public Router getRouter() {
return new HuaWeiRouter();
}
}
package abstractfactory;
/**
* 小米手机
*
* @author mrhy
* @date 2021/1/4 09:50
* Copyright (C), 2018-2021
*/
public class HuaweiIPhone implements Phone{
@Override
public void open() {
System.out.println("华为手机开机");
}
@Override
public void close() {
System.out.println("华为手机关机");
}
@Override
public void sendMsg() {
System.out.println("华为手机发短信");
}
@Override
public void call() {
System.out.println("华为手机打电话");
}
}
package abstractfactory;
/**
* @author mrhy
* @date 2021/1/4 11:19
* Copyright (C), 2018-2021
*/
public class HuaWeiRouter implements Router {
@Override
public void open() {
System.out.println("华为路由器开机");
}
@Override
public void close() {
System.out.println("华为路由器关闭");
}
@Override
public void sendSgn() {
System.out.println("华为路由器广播");
}
}
package abstractfactory;
/**
* 工厂的基类接口
*
* @author mrhy
* @date 2021/1/4 13:50
* Copyright (C), 2018-2021
*/
public interface IFactory {
Phone getPhone();
Router getRouter();
}
package abstractfactory;
/**
* 小米工厂
*
* @author mrhy
* @date 2021/1/4 13:52
* Copyright (C), 2018-2021
*/
public class MiFactory implements IFactory {
@Override
public Phone getPhone() {
return new XiaomiIPhone();
}
@Override
public Router getRouter() {
return new XiaomiRouter();
}
}
package abstractfactory;
/**
* 手机接口
*
* @author mrhy
* @date 2021/1/4 09:44
* Copyright (C), 2018-2021
*/
public interface Phone {
void open();
void close();
void sendMsg();
void call();
}
package abstractfactory;
/**
* 路由器
*
* @author mrhy
* @date 2021/1/4 09:49
* Copyright (C), 2018-2021
*/
public interface Router {
void open();
void close();
void sendSgn();
}
package abstractfactory;
/**
* 小米手机
*
* @author mrhy
* @date 2021/1/4 09:50
* Copyright (C), 2018-2021
*/
public class XiaomiIPhone implements Phone{
@Override
public void open() {
System.out.println("小米手机开机");
}
@Override
public void close() {
System.out.println("小米手机关机");
}
@Override
public void sendMsg() {
System.out.println("小米手机发短信");
}
@Override
public void call() {
System.out.println("小米手机打电话");
}
}
package abstractfactory;
/**
* @author mrhy
* @date 2021/1/4 11:19
* Copyright (C), 2018-2021
*/
public class XiaomiRouter implements Router {
@Override
public void open() {
System.out.println("小米路由器开机");
}
@Override
public void close() {
System.out.println("小米路由器关闭");
}
@Override
public void sendSgn() {
System.out.println("小米路由器广播");
}
}
package abstractfactory;
/**
* @author mrhy
* @date 2021/1/4 13:54
* Copyright (C), 2018-2021
*/
public class Customer {
public static void main(String[] args) {
MiFactory miFactory = new MiFactory();
Phone phone = miFactory.getPhone();
phone.open();
phone.close();
phone.sendMsg();
phone.call();
Router router = miFactory.getRouter();
router.open();
router.close();
router.sendSgn();
HuaweiFactory huaweiFactory = new HuaweiFactory();
Phone phone2 = huaweiFactory.getPhone();
phone2.open();
phone2.close();
phone2.sendMsg();
phone2.call();
Router router2 = huaweiFactory.getRouter();
router2.open();
router2.close();
router2.sendSgn();
}
}


浙公网安备 33010602011771号