开始之前,必须得注明一下,简单工厂并不是设计模式,它是一种编程习惯,方便后续引入工厂方法模式和抽象工厂模式。
简单工厂:
简单工厂非常简单,就是将所有类型实例化封装成一个类,用于解决使用new很多,违背了针对接口编程设计原则的问题,这也是工厂模式的设计原因之一。
UML类图:
Clien通过SimpleProductFactory取得Product实例。
SimpleProductFactory直接取得Product具体类
Product也可以是接口
代码实现:
Client.java
public class Client {
void orderProduct(String productName)
{
SinpleProductFactory factory=new SinpleProductFactory();
Product product = factory.createProduct(productName);
product.welcomeToUse();
}
}
SimpleProductFactory.java
public class SinpleProductFactory {
public Product createProduct(String type)
{
Product product=null;
if(type.equals("productA"))
product = new ProductA();
else if (type.equals("productB"))
product = new ProductB();
return product;
}
}
Product.java
public abstract class Product {
private String name;
private String Price;
abstract void welcomeToUse();
}
ProductA.java
public class ProductA extends Product {
String name="productA";
String price="12";
void welcomeToUse()
{
System.out.println(name+":"+price);
}
}
ProductB.java
public class ProductB extends Product {
String name="productB";
String price="14";
void welcomeToUse()
{
System.out.println(name+":"+price+",并赠送你张1元消费券");
}
}
测试代码:
Client client1 = new Client();
client1.orderProduct("productA");
Client client2 = new Client();
client1.orderProduct("productB");
运行结果: