設計模式4——抽象工廠模式
阿新 • • 發佈:2020-08-26
設計模式4——抽象工廠模式
程式碼:
package com.ghl.factory.abstract1; /** * @ProjectName DesignPattern * @ClassName IphoneProduct * @Date 2020/8/26 14:48 * @Author gaohengli * @Version 1.0 */ //抽象工廠模式 //手機產品介面 public interface IphoneProduct { void start(); void shutdown(); void callup(); void sendSMS(); }
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName IRouterProduct
* @Date 2020/8/26 16:08
* @Author gaohengli
* @Version 1.0
*/
//路由產品介面
public interface IRouterProduct {
void start();
void shutdown();
void openwife();
void setting();
}
package com.ghl.factory.abstract1; /** * @ProjectName DesignPattern * @ClassName XiaomiPhone * @Date 2020/8/26 16:11 * @Author gaohengli * @Version 1.0 */ //小米手機 public class XiaomiPhone implements IphoneProduct{ @Override public void start() { System.out.println("開啟小米手機"); } @Override public void shutdown() { System.out.println("關閉小米手機"); } @Override public void callup() { System.out.println("小米打電話"); } @Override public void sendSMS() { System.out.println("小米發簡訊"); } }
package com.ghl.factory.abstract1; /** * @ProjectName DesignPattern * @ClassName XiaomiRouter * @Date 2020/8/26 16:15 * @Author gaohengli * @Version 1.0 */ //小米路由器 public class XiaomiRouter implements IRouterProduct { @Override public void start() { System.out.println("啟動小米路由器"); } @Override public void shutdown() { System.out.println("關閉小米路由器"); } @Override public void openwife() { System.out.println("開啟小米wifi"); } @Override public void setting() { System.out.println("小米設定"); } }
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName HuaweiPhone
* @Date 2020/8/26 16:13
* @Author gaohengli
* @Version 1.0
*/
//華為手機
public class HuaweiPhone implements IphoneProduct {
@Override
public void start() {
System.out.println("開啟華為手機");
}
@Override
public void shutdown() {
System.out.println("關閉華為手機");
}
@Override
public void callup() {
System.out.println("華為打電話");
}
@Override
public void sendSMS() {
System.out.println("華為發簡訊");
}
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName HuaweiRouter
* @Date 2020/8/26 16:16
* @Author gaohengli
* @Version 1.0
*/
//華為路由器
public class HuaweiRouter implements IRouterProduct{
@Override
public void start() {
System.out.println("啟動華為路由器");
}
@Override
public void shutdown() {
System.out.println("關閉華為路由器");
}
@Override
public void openwife() {
System.out.println("開啟華為wifi");
}
@Override
public void setting() {
System.out.println("華為設定");
}
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName IProductFactory
* @Date 2020/8/26 16:20
* @Author gaohengli
* @Version 1.0
*/
//抽象產品工廠
public interface IProductFactory {
//生產手機
IphoneProduct iphoneProduct();
//生產路由器
IRouterProduct iRouterProduct();
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName HuaweiFactory
* @Date 2020/8/26 16:25
* @Author gaohengli
* @Version 1.0
*/
//華為工廠
public class HuaweiFactory implements IProductFactory {
@Override
public IphoneProduct iphoneProduct() {
return new HuaweiPhone();
}
@Override
public IRouterProduct iRouterProduct() {
return new HuaweiRouter();
}
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName XiaomiFactory
* @Date 2020/8/26 16:23
* @Author gaohengli
* @Version 1.0
*/
//小米工廠
public class XiaomiFactory implements IProductFactory{
@Override
public IphoneProduct iphoneProduct() {
return new XiaomiPhone();
}
@Override
public IRouterProduct iRouterProduct() {
return new XiaomiRouter();
}
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName Client
* @Date 2020/8/26 16:36
* @Author gaohengli
* @Version 1.0
*/
//客戶端測試
public class Client {
public static void main(String[] args) {
XiaomiFactory xiaomiFactory = new XiaomiFactory();
IphoneProduct iphoneProduct = xiaomiFactory.iphoneProduct();
iphoneProduct.callup();
iphoneProduct.sendSMS();
IRouterProduct iRouterProduct = xiaomiFactory.iRouterProduct();
iRouterProduct.openwife();
}
}