1、多态:
多态是什么?
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作
多态的优点
1.消除类型之间的耦合关系
2. 可替换性
3. 可扩充性
4. 接口性
5. 灵活性
6. 简化性
多态存在的三个必要条件
1.继承
2.重写
3.父类引用指向子类对象
代码示例:
package com.example.log.controller;
public class Temp {
public static void main(String[] args) {
TempInterface temp1 = new Temp1();
TempInterface temp2 = new Temp2();
temp1.fun(); //此刻 看起来都是 TempInterface 同一个东西,但是行为(输出结果)却不一样了
temp2.fun();
}
}
interface TempInterface {
void fun();
}
class Temp1 implements TempInterface {
public void fun() {
System.out.println("Temp1");
}
}
class Temp2 implements TempInterface {
public void fun() {
System.out.println("Temp2");
}
}
输出:
扩展:由此引入
策略模式:
调用方丢进去 具体的策略实例,则开始调用该实例的方法
定义一些独立的类来封装不同的算法,每一个类封装一个具体的算法
用多态来解耦 原本写在一坨的 if else ,一系列算法可以理解成接口的不同实现类,因为不同实现类都实现了相同的接口,因而它们也可以相互替换。策略模式让算法独立于客户端而变化与接口的实现类可以独立于使用接口的客户端变化类似。
具体策略类 都去实现 抽象策略类, 上下文(调用方) 使用 抽象策略类,需丢入 具体策略对象
缺点:类变多,代码不够直观表达
文章参考:
策略模式(Strategy Pattern) - 简书 (jianshu.com)
工厂模式
我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
即:我们委托工厂生产产品,但不关心怎么生产的。
工厂生产的对象的类型,用到了 多态,进行统一声明。