Java工厂模式

工厂模式概念
实例化对象,用工厂方法代替new操作
工行模式包括工厂方法模式和抽象工厂模式
抽象工厂模式是工厂方法模式的扩展
工厂模式意图
定义一个接口来创建对象,但是让子类决定哪些类需要被实例化
工厂方法把实例化的工作推迟到子类中去实现
什么情况下适合工厂模式
有一组类似的对象需要创建
在编码的时候不能预见需要创建哪种类的实例
系统需要考虑扩展性,不依赖于产品实力如何被创建
工厂模式的动机
在软件系统中经常面临着对象的创建工作,由于需求的变化,这个对象可能随之也会发生变化,但是它却拥有比较稳定的接口
为此,我们需要提供一种封装机制来隔离这个容易改变对象的变化,从而保持系统中其他依赖该对象的对象不随着需求变化而变化
**

以上都是废话,听不懂的直接看例子就好

**
一个游戏,需要捏脸,有三种发型,左偏右偏中间**
要实现它
第一步:创建一个接口 IHair

public interface IHair {
    public void getHair();

}

第二步,创建接口的三个实现类

public class LeftHair implements IHair{

    @Override
    public void getHair() {
    System.out.println("左偏");

    }

}
public class RightHair implements IHair{

    @Override
    public void getHair() {
        System.out.println("右偏");

    }

}
public class MiddleHair implements IHair{

    @Override
    public void getHair() {
        System.out.println("中间");

    }

}

第三步:不用工厂模式的话,只能一个个的创建对象,调用对象的方法,输出对应的发型

public class Test {
    public  static void main (String [] args){
        LeftHair leftHair=new LeftHair();
        leftHair.getHair();
        RightHair rightHair=new RightHair();
        rightHair.getHair();
        MiddleHair middleHair=new MiddleHair();
        middleHair.getHair();

    }

}

第三步,使用工厂模式,建立一个hairfactory类,传进hairType就可以自动创建对象

public class HairFactory {
    public IHair getHair(String hairType){
        if("left".equals(hairType)){//这里把left放在前面可以避免hairtype为空抛异常
            return new LeftHair();
        }else if("right".equals(hairType)){
            return new RightHair();
        }
        return new MiddleHair();
    }

}

测试类,借助工场创建对象即可

public class Test {
    public  static void main (String [] args){
        HairFactory hairFactory=new HairFactory();
        IHair left=hairFactory.getHair("left");
        left.getHair();

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-乾坤-

????????????????????????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值