前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图图谈设计模式——抽象工厂设计模式_java

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

作者头像
一头小山猪
发布2020-04-10 10:56:56
3820
发布2020-04-10 10:56:56
举报
文章被收录于专栏:微光点亮星辰

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

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

其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的类一般都是工厂模式的实现。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微光点亮星辰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档