欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java工厂模式(简单工厂、工厂方法、抽象工厂)

程序员文章站 2022-07-14 21:36:58
...

设计模式复习,代码是最好的说明。


简单工厂模式:

定义:简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例,属于创建型模式。

UML图:(图是用staruml画的,接口有些特别)

Java工厂模式(简单工厂、工厂方法、抽象工厂)

代码:

public class FactoryMode {

    public static void main(String[] args) {
        Factory factory=new Factory();
        factory.createProduct(ProductType.A).createMethod();

    }
    
}

enum ProductType{
    A,B
}

interface IProduct{

    void createMethod();

}

class ProductA implements IProduct{

    public void createMethod() {
        System.out.println("A");
    }

}

class ProductB implements IProduct{

    public void createMethod() {
        System.out.println("B");
    }
}

class Factory{

    public IProduct createProduct(ProductType productType){
        switch (productType){
            case A:
                return new ProductA();
            case B:
                return new ProductB();

        }
        return null;
    }
    
}


工厂方法模式:

定义:工厂方法模式定义一个创建对象的接口,让其子类自己去决定实例化哪一个工厂类,使其创建过程延迟到子类执行,属于创建型模式。

UML图:

Java工厂模式(简单工厂、工厂方法、抽象工厂)

代码:

public class FactoryMode {

    public static void main(String[] args) {
        IFactory factory = new FactoryA();
        factory.createProduct().createMethod();
        factory = new FactoryB();
        factory.createProduct().createMethod();

    }

}


interface IProduct{

    void createMethod();

}

class ProductA implements IProduct{

    public void createMethod() {
        System.out.println("A");
    }

}

class ProductB implements IProduct{

    public void createMethod() {
        System.out.println("B");
    }
}


interface IFactory{

    IProduct createProduct();

}

class FactoryA implements IFactory{

    public IProduct createProduct() {
        return new ProductA();
    }
}

class FactoryB implements IFactory{

    public IProduct createProduct() {
        return new ProductB();
    }
}


抽象工厂模式:

定义:抽象工厂模式提供一个创建一系列相关或互相依赖对象的接口,而不需指定它们具体的类,属于创建型模式。

UML图:

Java工厂模式(简单工厂、工厂方法、抽象工厂)


代码:

public class FactoryMode {

    public static void main(String[] args) {
        IFactory factory = new FactoryForLowCase();
        factory.createProductA().createMethodA();
        factory.createProductB().createMethodB();

        factory = new FactoryForUpCase();
        factory.createProductA().createMethodA();
        factory.createProductB().createMethodB();
    }

}


interface IProductA{

    void createMethodA();

}

interface IProductB{

    void createMethodB();

}

class ProductA implements IProductA{

    public void createMethodA() {
        System.out.println("A");
    }
}

class ProductAL implements IProductA{

    public void createMethodA() {
        System.out.println("a");
    }
}


class ProductB implements IProductB{

    public void createMethodB() {
        System.out.println("B");
    }
}

class ProductBL implements IProductB{

    public void createMethodB() {
        System.out.println("b");
    }
}


interface IFactory{

    IProductA createProductA();

    IProductB createProductB();

}

class FactoryForUpCase implements IFactory{

    public IProductA createProductA() {
        return new ProductA();
    }

    public IProductB createProductB() {
        return new ProductB();
    }
}

class FactoryForLowCase implements IFactory{

    public IProductA createProductA() {
        return new ProductAL();
    }

    public IProductB createProductB() {
        return new ProductBL();
    }
}
这里命名用的不太好,哈哈......

工厂模式的优点很多,在不在此赘述,掌握使用的时机和学会定制最重要。


参考链接:

http://www.runoob.com/design-pattern/factory-pattern.html

http://zyjustin9.iteye.com/blog/2094960

http://www.cnblogs.com/toutou/p/4899388.html

如有错误,欢迎纠正!