设计模式:
前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定。而是一套用来提高代码可复用性、可维护性、可读性、稳健性、以及安全性的解决方案
设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。
正确使用设计模式具有以下优点:
- 可以提高程序员的思维能力、编程能力和设计能力。
- 使程序设计更加标准化、代码编制更加I程化,使软件开发效率大大提高,从而缩短软件的开发周期。
- 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。
工厂模式
实现了 创建者 和 调用者 分离
详细分类
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
用到的OOP原则
- 开闭原则: 对扩展开放,对修改关闭。
- 依赖倒置原则: 要面向接口编程,不要面向实现编程。
- 迪米特法则: 只与你的直接朋友交谈,不跟“陌生人”说话。
核心本质:
- 实例化对象不使用new,用工厂方法代替
- 将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。
工厂模式
简单工厂模式
|
工厂方法模式
|
抽象工厂模式
|
简单工厂模式的精髓
/**
* @Descrintion: 静态工厂方法——简单工厂模式【不修改代码的情况下做不到】
* @version: 1.0
*/
public class CarFactory {
//方法一
public static Car getCar(Car car){
if (car.equals("五菱")){
return new WuLing();
}else if (car.equals("特斯拉")){
return new Tesla();
}else {
return null;
}
}
//方法二
public static Car getWuLing(){
return new WuLing();
}
public static Car getTesla(){
return new Tesla();
}
}
车的接口
/**
* @Descrintion: 一个车的简单实现类
* @version: 1.0
*/
public interface Car {
void name();
}
两个车
/**
* @Descrintion:模拟一辆车的简单属性
* @version: 1.0
*/
public class Tesla implements Car {
@Override
public void name() {
System.out.println("特斯拉");
}
}
/**
* @Descrintion:模拟一辆车的简单属性
* @version: 1.0
*/
public class WuLing implements Car {
@Override
public void name() {
System.out.println("五菱宏光");
}
}
那么顾客要买车
/**
* @Descrintion:模拟顾客买车动作
* @version: 1.0
*/
public class Consumer {
public static void main(String[] args) {
//之前的方式——需要自己去创建,所有的事情由自己完成,顾客需要关心造车过程
Car wuling = new WuLing();
Car tesLa = new Tesla();
//使用简单工厂的方式——创建的工作交给工厂去创建,顾客只关心买车,不关心造车
Car wuling = CarFactory.getWuLing();
Car tesLa = CarFactory.getTesla();
wuling.name();
tesLa.name();
}
}