技术文

Java设计模式之工厂模式(三种)

2016-10-19  本文已影响985人  阿菜的博客

工厂模式

工厂模式

参考

<br />

1. 简单工厂

理解

例子

//产品接口
public interface ProductI {
    public void productName();
}
public class ProductA implements ProductI {
    @Override
    public void productName() {
        System.out.println("product A");
    }
}
public class ProductB implements ProductI {
    @Override
    public void productName() {
        System.out.println("product B");
    }
}
// 简单工厂模式
public class Factory {
    public ProductI create(String productName) {
        switch (productName) {
            case "A":
                return new ProductA();
            case "B":
                return new ProductB();
            default:
                return null;
        }
    }
}
public class Client {
    public static void main(String[] args) {
        Factory factory = new Factory();
        ProductI productA = factory.create("A");
        productA.productName();
        //
        ProductI productB = factory.create("B");
        productB.productName();
    }
}

product A
product B

<br />

2. 工厂方法

理解

例子

public interface FactoryI {
    // 工厂的目的是为了生产产品
    public ProductI create();
}
public class FactoryA implements FactoryI {
    @Override
    public ProductI create() {
        return new ProductA();
    }
}
public class FactoryB implements FactoryI {
    @Override
    public ProductI create() {
        return new ProductB();
    }
}
// 工厂方法模式
public class Client {
    public static void main(String[] args) {
        FactoryI factoryA = new FactoryA();
        ProductI productA = factoryA.create();
        productA.productName();
        //
        FactoryI factoryB = new FactoryB();
        ProductI productB = factoryB.create();
        productB.productName();
    }
}

product A
product B

<br />

3. 抽象工厂

理解

例子

// 抽线工厂模式
public interface AbstractFactory {
    public ProductAI createProductA();
    public ProductBI createProductB();
}
public class Factory1 implements AbstractFactory {
    @Override
    public ProductAI createProductA() {
        return new ProductA1();
    }

    @Override
    public ProductBI createProductB() {
        return new ProductB1();
    }
}
public class Factory2 implements AbstractFactory {
    @Override
    public ProductAI createProductA() {
        return new ProductA2();
    }

    @Override
    public ProductBI createProductB() {
        return new ProductB2();
    }
}
//产品接口
public interface ProductBI {
    public void productName();
}
//产品接口
public interface ProductAI {
    public void productName();
}
public class ProductA1 implements ProductAI {
    @Override
    public void productName() {
        System.out.println("product A1");
    }
}

其余三个产品实体类,略。

上一篇 下一篇

猜你喜欢

热点阅读