图图又好久没来了,接下来将分享工厂模式的最后一个设计模式:抽象工厂设计模式。
抽象工厂一般解决的是产品族的概念。一个工厂创建整个产品的优劣组件,从根本上说是多中产品,而相互依赖,构成一个抽象产品。
其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的类一般都是工厂模式的实现。
下次将分享建造者模式。谢谢读者对我们组织的支持!