学会设计模式,你就可以像拥有魔法一样,在开发过程中解决一些复杂的问题。设计模式是由经验丰富的开发者们(GoF)凝聚出来的最佳实践,可以提高代码的可读性、可维护性和可重用性,从而让我们的开发效率更高。通过不断的练习和实践,掌握其中的奥妙,选择合适的设计模式,能为我们的项目增加一丝神奇的魔力。
文章目录
- 实例
- 目的
- 适用场景
- 弊端
- 类图:
- 框架用到的地方:
- Coding
- 测试:
- 测试结果:
实例
一家SUV造车厂,一家小轿车造车厂,且小轿车会根据“厢”划分不同车型,故作如下设计:
目的
将买车顾客和汽车解耦,工厂类承担构建所有对象的职责,顾客只需要说出车型,让工厂生产出来即可。并且解决某种车会有多种配置的情况,若是使用前面的“简单工厂模式”我们就需要在汇总的工厂类中加入分支语句,随着各类车增加车型会使汇总工厂类变得越来越大。「说白了再创建一个工厂,用来创建工厂类对象」
适用场景
产品有大量的继承体系并且后期会有大量的扩展需求
弊端
每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度。
类图:
框架用到的地方:
日志记录、数据库访问等
Coding
Car接口:
public interface Car {
void creat();
}
SmallCar:
public class SmallCar implements Car {
public SmallCar(Integer box) {
this.creat(box);
}
public SmallCar() {
this.creat();
}
@Override
public void creat() {
System.out.println("造一辆标配小轿车");
}
public void creat(Integer box) {
System.out.println("造一辆" + box + "厢小轿车");
}
}
SUV:
public class SUV implements Car{
@Override
public void creat() {
System.out.println("造一辆SUV");
}
}
SmallCarFactory:
public class SmallCarFactory {
public Car creatCar(Integer box) {
if (box != null) {
return new SmallCar(box);
}
return new SmallCar();
}
}
SUVCarFactory:
public class SUVCarFactory {
public Car creatCar(){
return new SUV();
}
}
测试:
public class Test {
public static void main(String[] args) {
SmallCarFactory smallCarFactory = new SmallCarFactory();
Car car = smallCarFactory.creatCar(null);
System.out.println(car);
}
}
测试结果:
造一辆标配小轿车
文章后期会持续优化,如果觉得小名的文章帮助到了您,请关注小名,支持一下小名😄,给小名的文章点赞👍、评论✍、收藏🤞谢谢大家啦~♥♥♥
编码魔法师系列文章,会收录在小名的【设计模式】专栏中,希望大家可以持续关注🎉