Java工厂模式

设计模式:

1、设计模式是什么?

设计模式是前辈对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。

2、学习设计模式的意义

  • 设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。
  • 正确使用设计模式具有以下优点:
  • 可以提高程序员的思维能力、编程能力和设计能力
  • 使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。
  • 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。

3、设计模式的基本要素

  • 模式名称
  • 问题
  • 解决方案
  • 效果

4、GOF23(23种设计模式)

  • 创建型模式:
    • 单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式。
  • 结构型模式:
    • 适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式
  • 行为型模式:
    • 模板方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘录模式,解释器
      模式,状态模式,策略模式,职责链模式,访问者模式。

5、OOP的七大原则:

  • 开闭原则:对扩展开放,对修改关闭
  • 里氏替换原则:继承必须确保超类所拥有的性质在子类中仍然成立
  • 依赖倒置原则:要面向接口编程,不要面向实现编程。
  • 单一职责原则:控制类的粒度大小、将对象解耦、提高其内聚性。
  • 接口隔离原则:要为各个类建立它们需要的专用接口
  • 迪米特法则:只与你的直接朋友交谈,不跟“陌生人”说话。
  • 合成复用原则:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。

一、单例模式:

二、工厂模式:

  • 作用:

  • 实现了创建者和调用者的分离

  • 详细分类:

    • 简单工厂模式
    • 工厂方法模式
    • 抽象工厂模式
  • 核心本质:

  • 实例化对象不使用new,电工厂方法代

  • 将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。

  • 三种模式:

  • 简单工厂模式

    • 用来生产同一等级结构中的任意产品(对于增加新的产品,
      需要球盖已有代码)
  • 工厂方法模式

    • 用来生产同一等级结构中的固定产品(支持增加任意产品)抽象工厂模式
      围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。

2.1、简单工厂模式:

我们用代码来演示一次: 需求就是顾客去购买手机

public interface TelePhone {
    void name();  //创建接口
}
public class Huawei implements TelePhone {
    @Override
    public void name() {
        System.out.println("华为手机");
    }
}
public class Iphone implements TelePhone {

    @Override
    public void name() {
        System.out.println("苹果手机");
    }
}
public class Consumer {
    public static void main(String[] args) {
        Huawei huawei = new Huawei();
        Iphone iphone = new Iphone();

        android.name();
        huawei.name();
        iphone.name();
    }
}

我们可以看到在使用普通方式去构建的时候我们需要频繁的去new 一个对象–>我们尝试加入简单的工厂模式

然后我们看看添加简单工厂模式后的代码–>新增一个工厂类,我们实现的逻辑:

在这里插入图片描述

可以看到我们在加一层Factory后我们可以直接在工厂里面拿到内容,不在需要频繁的去New一个对象,就满足:

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

我们来看一下代码实例:

public class TelePhoneFactory {
    public static TelePhone getPhone(String name){
        if (name.equalsIgnoreCase("huawei")){
           return new Huawei();
        }else if (name.equalsIgnoreCase("Iphone")){
            return new Iphone();
        }else{
            return new Android();
        }
    }
}

在看消费者:

public class Consumer {
    public static void main(String[] args) {
//        Android android = new Android();
//        Huawei huawei = new Huawei();
//        Iphone iphone = new Iphone();
//
//        android.name();
//        huawei.name();
//        iphone.name();
        TelePhone huawei = TelePhoneFactory.getPhone("huawei");
        TelePhone android = TelePhoneFactory.getPhone("android");
        huawei.name();
        android.name();
    }

这样我们就得到了一个简单的工厂模式,要了解到原理哟!

2.2、工厂方法模式:

2.2、工厂方法模式:

然我们看一下方法模式,简单的来说就是一个产品对应一个工厂的方式

在这里插入图片描述

继续来看一下代码的实现,但是我们现在只举一个例子,在看的小伙伴一定要自己下去实现一次。

Interface

public interface PhoneFactory {
    TelePhone getPhone();
}
public class AndroidPhoneFactory implements PhoneFactory{
    @Override
    public TelePhone getPhone() {
        return new Android();
    }
}
public class Consumer {
    public static void main(String[] args) {
        AndroidPhoneFactory android = new AndroidPhoneFactory();
        android.getPhone().name();
    }
}

这样工厂方法模式就实现啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秃头路上的小强

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

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

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

打赏作者

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

抵扣说明:

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

余额充值