一、简单工厂
(一)定义
简单工厂模式一般的实现方式是:通过使用构建时传入的参数进行case语句判读,然后选择new出对应的对象。严格来讲简单工厂模式不是GOF的设计模式之一。
(二)优缺点
1.优点
(1)最大的优点是工厂类包含了必要的逻辑判断,根据客户端的选择条件动态的实例化相关的类,将客户端与具体的产品解藕。
(2)集中封装了对象的创建,使得在更换对象的时候,不需要做大的改动就可以实现。
2.缺点
简单工厂在添加新的产品时,需要修改原来的工厂类,如添加一个新的case分支,违背了开放-封闭原则。
(三)UML
(四)DEMO
import java.util.Scanner;
interface Product {
void showInfo();
}
class ProductA implements Product {
public void showInfo() {
System.out.printf("I am A!");
}
}
class ProductB implements Product {
public void showInfo() {
System.out.printf("I am B!");
}
}
class SimpleFactory {
Product pro;
Product createProduct(int which) {
switch (which) {
case 1:
pro = new ProductA();
break;
case 2:
pro = new ProductB();
break;
default:
break;
}
return pro;
}
}
public class Client {
public void use() {
Scanner scanner = new Scanner(System.in);
int choice;
choice = scanner.nextInt();
Product pro = new SimpleFactory().createProduct(choice);
pro.showInfo();
}
public static void main(String[] args) {
Client client = new Client();
client.use();
}
}
(五)注意点
java语言中的接口中的属性肯定是常量,即publicstatic final 类型变量=值;既然是final就不能二次赋值。
转载请表明本博客。