设计模式-工厂模式简单版1.1(java版本)

工厂模式-基本概念:

核心本质:

  • (1)实例化对象不适用new,用工厂方法代替
  • (2)将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。

三种模式:

  • (1)简单工厂模式

用来生产同一等级结构中的任意产品(对于增加新的产品,需要扩展已有的代码)

  • (2)工厂方法模式

用来生产同一等级结构中的固定产品(支持增加新产品)

  • (3)抽象工厂模式

围绕一个超级工厂创建其它工厂。该超级工厂又称为其它工厂的工厂。
代码实现:


代码示例:

配图说明

在这里插入图片描述

1.简单工厂模式:
创建Car接口:

package factory;
//创建car接口
public interface Car 
{
    void Carname();
}

实现Car接口Baoma.java:

package factory;
//实现接口
public class Baoma implements Ca
r{
    @Override
    public void Carname() 
    {
        System.out.println("car is baoma !");
    }
}

实现Car接口woerwo.java:

package factory;
//实现接口
public class woerwo implements Car
{
    @Override
    public void Carname() 
    {
        System.out.println("car is woerwo !");
    }
}

创建一个工厂FactoryCar.java:

package factory;
//静态工厂模式
//增加一个新的产品,如果不修改代码,无法实现
//开闭原则
public class FactoryCar 
{
    Car getCarname(String carname)
    {
        if(carname.equals("baoma"))
        {
            return new Baoma();
        }
        else if(carname.equals("woerwo"))
        {
            return  new woerwo();
        }
        else
        {
            return null;
        }
    }
}

创建一个买车的消费者Consumer.java:

package factory;
public class Consumer 
{
    public static void main(String[] args) 
    {
        //采用new方式-最基本的方法
        // Car car=new Baoma();
        // car.Carname();

        //采用简单工厂模式
        //测试1
        Car car1=new FactoryCar().getCarname("baoma");
        car1.Carname();
        //测试2
        Car car2=new FactoryCar().getCarname("woerwo");
        car2.Carname();
    }
}


2.工厂方法模式:

图示说明:

在这里插入图片描述

创建一个Car接口:

package factory2;
//创建一个car接口
public interface Car 
{
    void Carname();
}

实现Car接口方法,baoma,java:

package factory2;
import factory.Car;
//实现Car接口方法
public class Baoma implements Car
 {
    @Override
    public void Carname()
     {
        System.out.println("car is baoma !");
    }
}

实现Car接口方法,woerwo,java:

package factory2;
import factory.Car;
//实现Car接口方法
public class woerwo implements Car 
{
    @Override
    public void Carname()
     {
        System.out.println("car is woerwo !");
    }
}

创建车工厂接口:FactoryCar

package factory2;
//创建车工厂接口
public interface FactoryCar 
{
    Car name();
}

实现FactoryCar接口方法,BaomaFactory.java

package factory2;
//实现车工厂FactoryCar接口方法
public class BaomaFactory implements FactoryCar
{
    @Override
    public Car name() {
        return (Car) new Baoma();
    }
}

实现FactoryCar接口方法,WoerwoFactory.java

package factory2;
//实现车工厂FactoryCar接口方法
public class WoerwoFactory implements FactoryCar
{
    @Override
    public Car name() 
    {
        return (Car) new woerwo();
    }
}

创建一个买车的消费者Consumer.java:

package factory2;
import factory.Car;
//创建一个消费者进行测试
public class Consumer 
{
    public static void main(String[] args)
     {
        //工厂方法模式
        Car car1= (Car) new BaomaFactory().name();
        Car car2= (Car) new WoerwoFactory().name();
        //测试1:
        car1.Carname();
        //测试2:
        car2.Carname();
    }
}


学习产出:

提示:这里只详细介绍了前两个工厂方法,后期会更新第三种抽象工厂,还会带有方法的配图说明

  • 知识不断的去积累
  • 学无止尽
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

暴躁茹

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值