首页 java设计模式 java设计模式学习-抽象工厂模式(实例)

java设计模式学习-抽象工厂模式(实例)

package com.yq1012.创建型模式.工厂方法.抽象工厂; public class AMD impleme…

UML

package com.yq1012.创建型模式.工厂方法.抽象工厂;

public class AMD implements CPU{
    public String getCPU(){
        return "Athlon XP 2008+";
    }
}



package com.yq1012.创建型模式.工厂方法.抽象工厂;
public abstract class ComputerFactory{
    CPU cpu;
    HardDisk hd;
    MainBoard mb;
public void show(){
        try{
            System.out.println(this.getClass().getName() .toString () + ("生产的电脑配置"));
            System.out.println ("CPU:" + cpu.getCPU ());
            System.out.println ("HardDisk:"+ hd.getSize ());
            System.out.print ("MainBoard:");
            mb.Attach(cpu);
        }
catch(Exception e){
            System.err.println(e.getMessage());
        }
    }
}


package com.yq1012.创建型模式.工厂方法.抽象工厂;
public interface CPU{
    public String getCPU();
}




package com.yq1012.创建型模式.工厂方法.抽象工厂;
public class DellFactory extends ComputerFactory{
    DellFactory(){
        cpu = new AMD();
        hd = new Maxtor();
        mb = new MSIK7N2G();
    }
}


package com.yq1012.创建型模式.工厂方法.抽象工厂;
public interface HardDisk{
    public String getSize();
}



package com.yq1012.创建型模式.工厂方法.抽象工厂;
public class IBMFactory extends ComputerFactory{
    IBMFactory(){
        cpu = new Intel();
        hd = new WestDigit();
        mb = new MSI865PE();
    }
}



package com.yq1012.创建型模式.工厂方法.抽象工厂;
public class Intel implements CPU{
    public String getCPU(){
        return "奔腾4 3.2C";
    }
}



package com.yq1012.创建型模式.工厂方法.抽象工厂;
public interface MainBoard{
    public void Attach(CPU cpu) throws Exception;
}



package com.yq1012.创建型模式.工厂方法.抽象工厂;
public class Maxtor implements HardDisk{
    public String getSize(){
        return "MaXLine Plus II 200G";
    }
}



package com.yq1012.创建型模式.工厂方法.抽象工厂;
//主板微星MSI865PE,支持Intel的CPU:
public class MSI865PE implements MainBoard{
    public void Attach(CPU cpu) throws Exception{
        if(cpu.getClass ().toString ().endsWith("Intel")){
            System.out.println("MSI865PE");
        }
         else{
            throw new Exception("主板MSI865PE只能配Intel的                                        CPU");
        }
    }
}




package com.yq1012.创建型模式.工厂方法.抽象工厂;
public class MSIK7N2G implements MainBoard{
    public void Attach(CPU cpu) throws Exception{
        if(cpu.getClass ().toString ().endsWith("AMD")){
            System.out.println("MSIK7N2G");
        }
        else{
            throw new Exception("主板MSIK7N2G只能配AMD的CPU");
        }
    }
}






package com.yq1012.创建型模式.工厂方法.抽象工厂;

public class Test {
	public static void main(String[] args) {

//		抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
//		举一个电脑产品的例子吧:
//		IBM,Dell都是著名的计算机生产厂家,他们采用的主板、硬盘及CPU是不相同的,
//		但是配件间、主板与CPU一定要相互兼容,例如下面例子中的微星MSIK7N2G配AMD的CPU;微星MSI865PE配Intel的CPU。
//		如图中所示,ComputerFactory是抽象工厂,Dell和IBM是生产产品的工厂
//		;CPU、HardDisk、MainBoard是抽象产品,CPU的型号又分许多种。具体实现见代码:
//
		        IBMFactory ibm = new IBMFactory();
		        ibm.show();
		        DellFactory dellFactory = new DellFactory();
		        dellFactory.show();

	}


//	抽象工厂模式:前面工厂方法模式是比较具体的,是猫肯定生的是小猫,这是不会有问题的
//	,是具体的,那么抽象工厂它所产生的就不是那么具体,产生的对象可能是没有共同特性的。
//	譬如说 一只奶羊不仅仅能够生小羊,同时也能生产羊奶,但小羊是动物,羊奶是食物。


}




package com.yq1012.创建型模式.工厂方法.抽象工厂;
public class WestDigit implements HardDisk{
    public String getSize(){
        return "WD2500JD 250G";
    }
}

 

 

来源

http://zhidao.baidu.com/question/340211082.html
http://c.hiphotos.baidu.com/zhidao/pic/item/a08b87d6277f9e2fe53e1d4e1f30e924b899f369.jpg
http://www.iteye.com/problems/2271

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

行为型 Iterator,迭代器模式

行为型 Iterator,迭代器模式

Iterator,迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。 ITERAT...
行为型 Interpreter,解释器模式

行为型 Interpreter,解释器模式

Interpreter,解释器模式:给定一个语言,定义他的文法的一个表示,并定义一个解释器,这个解释器使用该表示来解释语...
结构型 Proxy,代理模式

结构型 Proxy,代理模式

Proxy,代理模式:为其他对象提供一种代理以控制对这个对象的访问 PROXY 跟MM在网上聊天,一开头总是“hi,你好...
结构型 Flyweight,享元模式

结构型 Flyweight,享元模式

结构型 Flyweight,享元模式 FLYWEIGHT 每天跟MM发短信,手指都累死了,最近买了个新手机,可以把一些常...
结构型  外观模式, Facade

结构型 外观模式, Facade

外观模式, Facade FACADE 我有一个专业的Nikon相机,我就喜欢自己手动调光圈、快门,这样照出来的照片才专...
返回顶部