设计模式(一):简单工厂模式
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码
模式动机 做过Web开发的开发者都知道,在将用户的密码存储在数据库中时,我们需要将密码首先加密然后在写入数据库。 在Java中,我们常用的加密手段有MD5、RSA等。我们使用的代码是:
KeyPairGenerator.getInstance("RSA");
如果我们需要使用MD5时传入的参数就是MD5。这里,就是我们今天需要讲解的简单工厂模式。
模式定义 简单工厂模式又称为静态工厂模式,这个模式数据创建式模式。在简单工厂模式中,根据传入的参数,返回不同类的实例。
模式结构 简单工厂模式包含如下角色:
1.Factory:工厂角色
工厂角色负责实现创建所有实例的内部逻辑
2.Product:抽象产品角色
抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口
3.ConcreteProduct:具体产品角色
具体产品角色是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。
代码示例 这里我们首先创建一个抽象对象Product:
package cn.edu.hust.simpleFactory;
public abstract class Product {
public abstract void use();
}
然后创建两个实现类ProductA和ProductB
package cn.edu.hust.simpleFactory;
public class ProductA extends Product
{
@Override
public void use() {
System.out.println("using ProductA");
}
}
package cn.edu.hust.simpleFactory;
public class ProductB extends Product {
public void use() {
System.out.println("using productB");
}
}
最后创建一个工厂类
package cn.edu.hust.simpleFactory;
public class ProductFactory {
public Product createProduct(String productType)
{
if("ProductA".equals(productType))
{
return new ProductA();
}
else
{
return new ProductB();
}
}
工厂类根据参数返回不同的实现类。
模式优点
模式缺点
模式应用 JDK类库中广泛使用了简单工厂模式,如工具类java.text.DateFormat,它用于格式化一个本地日期或者时间。
public final static DateFormat getDateInstance();
public final static DateFormat getDateInstance(int style);
public final static DateFormat getDateInstance(int style,Locale locale);
原文:https://github.com/oeljeklaus-you/Design-Patterns/blob/master/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F(%E4%B8%80)%E7%AE%80%E5%8D%95%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F.md