------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
使用场景:一个产品,有多个产品结构
缺点:加入新加产品的话必须修改工厂
实现方法
1.建立抽象产品(抽象类或者接口)
2.建立具体产品(实现类)
3.建立抽象工厂(接口)
4.建立具体工厂(实现接口)
场景描述,有不同的CPU和主板,华硕主板必须安装Intel CPU ,技嘉主板必须安装AMD CPU
1.建立抽象产品类
//抽象产品 //CPU abstract class CPU{ public abstract void run();//运行方法 } //抽象产品 //主板 abstract class Motherboard{ public abstract void useCPU(CPU c);//安装CPU的方法 }
cpu
//具体产品类 //实现CPU 为AMD CPU class AMD extends CPU{ public void run(){ System.out.println("AMD CPU run"); } } //具体产品类 //实现CPU 为Intel CPU class Intel extends CPU{ public void run(){ System.out.println("Intel CPU run"); } }
主板
//具体产品类 //实现主板 华硕主板 class ASUS extends Motherboard{ //使用CPU public void useCPU(CPU c) { if(c instanceof Intel){//如果是Intel的CPU主板运行 c.run(); System.out.println("安装正确,ASUS主板运行成功"); }else {//不是intel的报错 System.out.println("请使用Intel CPU"); } } } //具体产品类 //实现主板 技嘉主板 class GIGABYTE extends Motherboard{ //使用CPU public void useCPU(CPU c) { if(c instanceof AMD){//如果是AMD的CPU运行 c.run(); System.out.println("安装正确,GIGABYTE主板运行成功"); } else {//不是AMD报错 System.out.println("请使用 AMD CPU"); } } }3.抽象工厂
//抽象工厂类 interface FactoryAbstract{ //创建CPU public abstract CPU createCPU(); //创建主板 public abstract Motherboard createMotherboard(); }
<span style="font-size:10px;">//具体工厂类 //生产AMD的CPU和技嘉主板 class FactoryAMDGIGABYTE implements FactoryAbstract{ //生产AMD public CPU createCPU() { return new AMD(); } //生产技嘉主板 public Motherboard createMotherboard() { return new GIGABYTE(); } } //具体工厂类 //生产Intel和华硕主板 class FactoryIntelASUS implements FactoryAbstract{ //生产Intel的CPU public CPU createCPU() { return new Intel(); } //生产华硕的CPU public Motherboard createMotherboard() { return new ASUS(); } }</span>
public class Main { public static void main(String[] args) { FactoryAbstract fac1 = new FactoryIntelASUS(); FactoryAbstract fac2 = new FactoryAMDGIGABYTE(); Motherboard mb = fac1.createMotherboard(); CPU c = fac1.createCPU(); mb.useCPU(fac1.createCPU()); mb = fac2.createMotherboard(); c = fac2.createCPU(); mb.useCPU(fac2.createCPU()); mb.useCPU(fac1.createCPU()); } }
Intel CPU run
安装正确,ASUS主板运行成功
AMD CPU run
安装正确,GIGABYTE主板运行成功
请使用 AMD CPU