图图谈设计模式——抽象工厂设计模式_java

2020-04-10 10:56:56 浏览数 (1)

图图又好久没来了,接下来将分享工厂模式的最后一个设计模式:抽象工厂设计模式。

抽象工厂一般解决的是产品族的概念。一个工厂创建整个产品的优劣组件,从根本上说是多中产品,而相互依赖,构成一个抽象产品。

其UML图如下:

代码语言:javascript复制
package org.huey.partten.factory.abstractfactory;
/**
 * 建造不同级别的Computer工厂
 * @author huey
 *
 */
public interface ComputerFactory {
     public Cpu creatCpu();
     public Disk creatDisk();
}
package org.huey.partten.factory.abstractfactory;
public class GreaterComputerFactory implements ComputerFactory{
     @Override
     public Cpu creatCpu() {
          return new GreateCpu();
     }
     @Override
     public Disk creatDisk() {
          return new GreateDisk();
     }
}
package org.huey.partten.factory.abstractfactory;
public class LesserComputerFactory implements ComputerFactory {
     @Override
     public Cpu creatCpu() {
          return new LessCpu();
     }
     @Override
     public Disk creatDisk() {
          return new LessDisk();
     }
}
package org.huey.partten.factory.abstractfactory;
/**
 * @author huey
 *
 */
public interface Cpu {
     public void CpuStatus();
}
package org.huey.partten.factory.abstractfactory;
public class GreateCpu implements Cpu{
     @Override
     public void CpuStatus() {
          System.out.println(this.getClass());
     }
}
package org.huey.partten.factory.abstractfactory;
public class LessCpu implements Cpu{
     @Override
     public void CpuStatus() {
          System.out.println(this.getClass());
     }
}
package org.huey.partten.factory.abstractfactory;
/**
 * @author huey
 *
 */
public interface Disk {
     public void diskStatus();
}
package org.huey.partten.factory.abstractfactory;
public class GreateDisk implements Disk{
     @Override
     public void diskStatus() {
          System.out.println(this.getClass());
     }
}
package org.huey.partten.factory.abstractfactory;
public class LessDisk implements Disk{
     @Override
     public void diskStatus() {
          System.out.println(this.getClass());
     }
}
package org.huey.partten.factory.abstractfactory;
/**
 * 测试类
 * @author huey
 *
 */
public class AbstractFactoryTest {
     public static void main(String[] args) {
          ComputerFactory greaterFactory = new GreaterComputerFactory();
          Cpu greatCpu = greaterFactory.creatCpu();
          greatCpu.CpuStatus();
          Disk greatDisk = greaterFactory.creatDisk();
          greatDisk.diskStatus();
          ComputerFactory lesserFactory = new LesserComputerFactory();
          Cpu cpu = lesserFactory.creatCpu();
          cpu.CpuStatus();
          Disk disk = lesserFactory.creatDisk();
          disk.diskStatus();
     }
}

工厂模式总结:

1.简单工厂也是静态工厂。也是项目中常用的,因为简洁。创建出来的实例有的时候是单例的。结合使用

2.工厂方法是简单工厂的进一步扩展,可以动态的去扩展,不用改代码,只是增加代码,ocp的思想。但是

造几种产品就需要几个工厂,代码量大。

3.抽象工厂一般用于产品族的概念,不同优劣的产品组成不同的抽象产品。

工厂模式是最简单的,也是最常见的设计模式。一般你看到的类是xxxFactory的类一般都是工厂模式的实现。

下次将分享建造者模式。谢谢读者对我们组织的支持!

0 人点赞