03. Abstract Factory模式代码

原创 2012年03月30日 01:14:29

    3. Abstract Factory 本质:选择产品簇的实现
      3.1 PC DIY
        public interface CpuApi {
            public void calculate();
        }
        public class AmdCpu implements CpuApi{
            private int pins = 0;
            public AmdCpu(int pins) {
                this.pins = pins;
            }
            public void calculate() {
                System.out.println("Now in AMD CPU, pins = " + pins);
            }
        }
        public class IntelCpu implements CpuApi{
            private int pins = 0;
            public IntelCpu(int pins) {
                this.pins = pins;
            }
            public void calculate() {
                System.out.println("Now in Intel CPU, pins = " + pins);
            }
        }
        public interface MainboardApi {
            public void installCpu();
        }
        public class GaMainboard implements MainboardApi{
            private int cpuHoles = 0;
            public GaMainboard(int cpuHoles) {
                this.cpuHoles = cpuHoles;
            }
            public void installCpu() {
                System.out.println("Now in GAMainboard, cpuHoles = " + cpuHoles);
            }
        }
        public class MsiMainboard implements MainboardApi{
            private int cpuHoles = 0;
            public MsiMainboard(int cpuHoles) {
                this.cpuHoles = cpuHoles;
            }
            public void installCpu() {
                System.out.println("Now in MSIMainboard, cpuHoles = " + cpuHoles);
            }
        }
        public interface AbstractFactory {
            public CpuApi createCpuApi();
            public MainboardApi createMainboardApi();
        }
        public class Schema1 implements AbstractFactory{
            public CpuApi createCpuApi() {
                return new IntelCpu(1156);
            }
            public MainboardApi createMainboardApi() {
                return new GaMainboard(1156);
            }
        }
        public class Schema2 implements AbstractFactory{
            public CpuApi createCpuApi() {
                return new AmdCpu(939);
            }
            public MainboardApi createMainboardApi() {
                return new MsiMainboard(939);
            }
        }
        public class ComputerEngineer {
            private CpuApi cpu = null;
            private MainboardApi mainboard = null;
            public void makeComputer(AbstractFactory schema) {
                prepareHardwares(schema);
            }
            private void prepareHardwares(AbstractFactory schema) {
                this.cpu = schema.createCpuApi();
                this.mainboard = schema.createMainboardApi();
                this.cpu.calculate();
                this.mainboard.installCpu();
            }
        }
        public class AbstractFactoryClient {
            public static void main(String[] args) {
                ComputerEngineer engineer = new ComputerEngineer();
                AbstractFactory schema = new Schema1();
                engineer.makeComputer(schema);
            }
        }


 

相关文章推荐

Python实现设计模式--03.抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式和工厂方法模式的区别是,后者一个工厂只生产一种产品,而前者是一个工厂可以生产多个产品。当然,这些产品之间是要有联系的,它们通常是一个整体产品的一部分,由工厂造出后再组装成一个完整的产品。网...

设计模式实例与代码:Abstract Factory模式

意图/定义:需要为特定的客户提供对象组 问题:需要实例化一组相关的对象 解决方案:协调对象组的创建。撮合 种方法,将如何执行对象实例化的规则从使用这些对象的客户对象中提取出来 参与者...
  • zzulp
  • zzulp
  • 2012年04月18日 23:54
  • 825

C#设计模式之工厂模式(Factory)--03 抽象工厂模式(Abstract Factory)

•     抽象工厂(Abstract Factory)模式 一、 抽象工厂(Abstract Factory)模式 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。 为了方便...
  • lujunql
  • lujunql
  • 2011年12月03日 05:43
  • 702

抽象工厂模式(Abstract Factory)

工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这...

设计模式之abstract factory(抽象工厂)

1、意图 创建一系列相关或互相依赖得对象得接口。 2、参与者关系 3、效果 a、当提供库得时候,使用这种方式来创建对象,可以使得客户只和类得接口打交道,而隐藏其实现。 b、当需要更换...
  • sydnash
  • sydnash
  • 2014年04月02日 22:35
  • 614
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:03. Abstract Factory模式代码
举报原因:
原因补充:

(最多只允许输入30个字)