简单工厂模式(SimpleFactory)----创建笔记
一、涉及角色:
a) 工厂类(Factory): 在客户端直接调用,创建产品对象,由java具体实现。
b) 抽象产品(Product):java接口或Java抽象类实现。具体产品父类or接口。
c) 具体产品(Concrete Product):工厂类创建的具体产品
二、故事说明
1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory
工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。
具体产品(AbstractProject)
public abstract class AbstractProject {
public abstract void printProject();
}
具体产品(ProjectA)
public class ProjectA extends AbstractProject {
@Override
public void printProject() {
System.out.println("new 了个 ProjectA");
}
}
具体产品(ProjectB)
public class ProjectB extends AbstractProject {
@Override
public void printProject() {
System.out.println("new 了个 projectB");
}
}
简单工厂(SimpleFactory)
public class SimpleFactory {
//-------------第一种----------------------//
public AbstractProject create(String type){
if(type.equals("projectA")){
return new ProjectA();
}else if(type.equals("projectB")){
return new ProjectB();
}
return null;
}
//-------------第二种-合并工厂与产品-------------------//
public AbstractProject createProjectA(){ //用返回父类类型,
return new ProjectA();
}
public AbstractProject createProjectB(){
return new ProjectB();
}
public static void main(String[] args) {
SimpleFactory factory = new SimpleFactory();
factory.create("projectA").printProject();
factory.create("projectB").printProject();
/*-------第二种-合并工厂与产品-------------*/
factory.createProjectA().printProject();
factory.createProjectB().printProject();
}
}
/*new 了个 ProjectA
new 了个 projectB
new 了个 ProjectA
new 了个 projectB*/