抽象工厂模式:
围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂。
定义:
抽象工厂模式提供了一个创建一系列相关或者依赖对象的接口,无需指定他们具体的类。
同一产品族的东西都是由同一个工厂生产的,但同一产品族位于不同等级结构
产品等级数量相对固定的一些产品族 可以考虑使用抽象模式
先写两个产品:手机、路由器。
再写两个产品的实现:小米、华为手机,小米、华为路由器。
然后定义一个抽象工厂,该工厂可能实现路由器也可能实现手机。
手机抽象接口: IphoneProduct
//手机产品接口
public interface IphoneProduct{
void start();
void shutdown();
void callup();
void sendSMS();
}
抽象路由器接口: IRouterProduct
//路由器产品接口
public interface IRouterProduct{
void start();
void shutdown();
void openWifi();
void setting();
}
小米手机: XiaomiPhone
public class XiaomiPhone implements IphoneProduct{
public void start(){
Sysout.out.println("xm kaiji");
}
public void shutdown(){
Sysout.out.println("xm guanji");
}
public void callup(){
Sysout.out.println("xm dadianhua");
}
public void sendSMS(){
Sysout.out.println("xm faduanxin");
}
}
华为手机:HuaweiPhone
public class HuaweiPhone implements IphoneProduct{
public void start(){
Sysout.out.println("hw kaiji");
}
public void shutdown(){
Sysout.out.println("hw guanji");
}
public void callup(){
Sysout.out.println("hw dadianhua");
}
public void sendSMS(){
Sysout.out.println("hw faduanxin");
}
}
小米路由器: XiaomiRouter
public class XiaomiRouter implements IRouterProduct{
public void start(){
Sysout.out.println("xm kaiji");
}
public void shutdown(){
Sysout.out.println("xm guanji");
}
public void openWifi(){
Sysout.out.println("xm dakaiwifi");
}
public void setting(){
Sysout.out.println("xm shezhi");
}
}
华为路由器: HuaweiRouter
public class HuaweiRouter implements IRouterProduct{
public void start(){
Sysout.out.println("hw kaiji");
}
public void shutdown(){
Sysout.out.println("hw guanji");
}
public void openWifi(){
Sysout.out.println("hw dakaiwifi");
}
public void setting(){
Sysout.out.println("hw shezhi");
}
}
抽象产品工厂:IProductFactory
public class IProductFactory{
//生产手机
IPhoneProduct iphoneProduct();
//生产路由器
IPouterProduct routerProduct();
}
小米工厂:XiaomiFactory
public class XiaomiFactory implements IProductFactory{
public IPhoneProduct iphoneProduct(){
return new XiaomiPhone();
}
public IRouterProduct routerProduct(){
return new XiaomiRouter();
}
}
华为工厂:HuaweiFactory
public class XiaomiFactory implements IProductFactory{
public IPhoneProduct iphoneProduct(){
return new HuaweiPhone();
}
public IRouterProduct routerProduct(){
return new HuaweiRouter();
}
}
实现:Client
public class Client{
...main(...){
//小米工厂
XiaomiFactory xiaomiFactory = new XiaomiFactory();
IPhoneProduct iphoneProduct = xiaomiFactory.iphoneProduct();
iphoneProduct.callup();
iphoneProduct.sendSMS();
IRouterProduct iRouterProduct = xiaomiFactory.routerProduct();
iRouterProduct.openWifi();
//华为同理Xiaomi->Huawei
HuaweiFactory huaweiFactory = new HuaweiFactory();
IPhoneProduct iphoneProduct = huaweiFactory.iphoneProduct();
iphoneProduct.callup();
iphoneProduct.sendSMS();
}
}
简单工厂模式:https://blog.csdn.net/qq_43799743/article/details/102945806
工厂方法模式:https://blog.csdn.net/qq_43799743/article/details/102945892