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);
            }
        }


 

设计模式:Abstract Factory和Builder(比较区别,个人认为讲得很明白)

如果说 Factory和Prototype是同一个层次的话,那么Abstract Factory和Builder就是更高一级的层次。 1 Abstact Factory   在上面的Factory类型...
  • lovingprince
  • lovingprince
  • 2007年04月17日 10:59
  • 4231

设计模式——抽象工厂模式(Abstract Factory)

要想正确的理解设计模式,首先必须明确它是为了解决什么问题而提出来的。 抽象设计模式概念:         针对抽象工厂这个设计模式,我查找了不少资料,感觉只有涉及产品级别和产品族的才是理解了抽象工厂设...
  • u012909091
  • u012909091
  • 2014年08月02日 16:52
  • 3607

Factory Method vs Abstract Factory

Factory Method vs Abstract Factory
  • u010373266
  • u010373266
  • 2016年12月20日 16:26
  • 318

设计模式之abstract factory篇(例子)

  Design Pattern II: Abstract Factory举例:有BMW和BENZ两家汽车工厂,他们都生产Wheel,Body,Engine。只不过生产出来的一个叫BMWWheel, ...
  • haiyan0106
  • haiyan0106
  • 2007年06月11日 21:16
  • 613

Abstract Factory Pattern(抽象工厂模式)——《深入浅出设计模式(C#/Java版)》

来源:《深入浅出设计模式(C#/Java版)》 莫勇腾 编著哎,似乎越看越觉得糊涂了,先积累吧定义:  提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂(Abstract ...
  • bydxyj
  • bydxyj
  • 2009年09月25日 14:47
  • 837

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

意图          提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。   场景          还是上次说的那个网络游戏,定下来是一个休闲的FPS游戏。和CS差不...
  • zhengluanfeng1985
  • zhengluanfeng1985
  • 2017年03月16日 21:58
  • 120

深入浅出设计模式 ------ Abstract Factory(抽象工厂)

本文可以和笔者的深入浅出设计模式 ------ Factory Method(工厂方法)参照着看, 可以区分这三个工厂模式的不同。...
  • wenniuwuren
  • wenniuwuren
  • 2015年01月29日 02:25
  • 1729

设计模式 - 抽象工厂模式(abstract factory pattern) 详解

抽象工厂模式(abstract factory pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/270916...
  • u012515223
  • u012515223
  • 2014年05月26日 16:52
  • 2174

抽象工厂模式(abstract)创建型模式 c#简单例子

抽象工厂模式(abstract)创建型模式 c#简单例子 适用于玩家用户数play1、play2....有变化,而行为move、jum无变化时...
  • zhgl7688
  • zhgl7688
  • 2014年12月11日 19:18
  • 902

Abstract Factory(抽象工厂)模式

Abstract Factory(抽象工厂)模式 GoF:Abstract Factory模式的意图是“提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类”。 工厂模式有: 抽象工厂(...
  • hubin6770
  • hubin6770
  • 2010年05月20日 12:59
  • 156
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:03. Abstract Factory模式代码
举报原因:
原因补充:

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