简单工厂模式(SimpleFactory)----创建笔记

来源:互联网 发布:linux查看cpu的线程数 编辑:程序博客网 时间:2024/06/04 20:31

简单工厂模式(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 {@Overridepublic void printProject() {System.out.println("new 了个  ProjectA");}}


具体产品(ProjectB)

public class ProjectB extends AbstractProject {@Overridepublic 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 了个  ProjectAnew 了个 projectBnew 了个  ProjectAnew 了个 projectB*/


 

0 0