栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 工厂模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 工厂模式

目录

1.简单工厂模式

2.工厂方法模式

3.抽象工厂模式


1.简单工厂模式

定义:又称为静态工厂模式 ,它属于创建型模式。在简单工厂模式中 ,可以根据参数的不同返回不同的实例。简单工厂专门定义了一个类来创建其他类的实例,被创建的实例一般有相同的父类。

优点:让创建和使用分离。该模式对对象创建管理方式最为简单。

缺点:由于是静态获取方法来获取对象,不能通过不同的方式去改变创建行为,所有有一定的局限性。当需要重新创建实例时又需要,对创建的判断条件进行改变。

实例

创建一个抽象类Program来管理两个子类实例ProgramA和ProgramB 可以根据不同的参数来返回不同的实例 Program

package FactoryMode;

public  abstract class Program {
    public abstract void program();

}


public class ProgramB  extends Program{
    @Override
    public void program() {
        System.out.println("ProgramB");

    }
}   

public class ProgramA extends Program {
    @Override
    public void program() {
 System.out.println("ProgramA");
    }


} 
import java.util.Scanner;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        
        Scanner input=new Scanner(System.in);
        String sele=input.next();

        if(sele.equals("ProgramA")){
            ProgramA programA=new ProgramA();
            programA.program();
        }

        if(sele.equals("ProgramB")){
            ProgramB programB=new ProgramB();
            programB.program();
        }
    }
}

2.工厂方法模式

定义:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到了子类。工厂方法模式将生成具体产品的任务分发给具体的产品工厂,对象的创建交给子类。子类来实现创建方法。

优点:由子类创建对象和实现创建方法。

缺点:该模式中只能创建一种产品。

实例

package FactoryMode;

public interface Product {
    public Product product();

}


public class ProductA implements  Product{
    @Override
    public Product product() {
       return new ProductA();
    }
}

public class ProductB implements  Product{

    @Override
    public Product product() {
        return new ProductB();
    }
}

public class Test1 {
    public static void main(String[] args) {
        Product A=new ProductA();
        Product B=new ProductB();
        A.product();
        B.product();


    }
}

3.抽象工厂模式

定义:使对象的创建被实现在工厂接口所暴露出来的方法中。当使用抽象工厂模式时,我们首先使用超级工厂创建工厂,然后使用创建的工厂创建对象。

优点:它让具体的创建实例过程与客户端分离,在一个应用中只需要在初始化的时候出现一次。

缺点:需要增加系列产品时会进行大量的改动。

实例

package FactoryMode;

public interface PC {
    void make();
}

public class HuaWeiPC implements PC{
   public HuaWeiPC(){
       this.make();
   }
    @Override
    public void make() {
    }
}
public class Mac  implements  PC{
 public Mac(){
     this.make();
 }
    @Override
    public void make() {

    }
}

public interface AbstractFactory {
    Phone makePhone();
    PC makePC();
}

public class HuaWeiFactory implements  AbstractFactory{
    @Override
    public Phone makePhone() {
        return new HuaWeiPhone();
    }

    @Override
    public PC makePC() {
        return new HuaWeiPC();
    }
}

public class AppleFactory implements AbstractFactory{
    @Override
    public Phone makePhone() {
        return new Iphone();
    }

    @Override
    public PC makePC() {
        return new  Mac();
    }
}

public class Demo {
    public static void main(String[] arg) {
        AbstractFactory HuaWeiFactory = new HuaWeiFactory();
        AbstractFactory ppleFactory = new AppleFactory();
        HuaWeiFactory.makePhone();           
        HuaWeiFactory.makePC();                
        appleFactory.makePhone();       
        appleFactory.makePC();            
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/582455.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号