Java设计模式:桥接模式解决的架构设计痛点

文章探讨了如何通过引入抽象工厂模式,将工厂和产品解耦,以解决原有架构在行业变化时难以适应新产品的痛点。作者提供了从造船厂和汽车厂的例子,展示了如何将具体产品抽象为Product模型,以及如何通过工厂类根据传入的产品类型进行生产和销售操作,从而降低转型成本并提高资源复用。
摘要由CSDN通过智能技术生成

现象痛点:

现在创建一个工厂,工厂的日常运行是生产和销售。如:

public abstract class Factory {

/**

  • 生产

*/

public abstract void produce();

/**

  • 销售

*/

public abstract void sell();

/**

  • 工厂运营。

*/

public void operation() {

produce();

sell();

}

}

一个造船厂:

public class BoatFactory extends Factory{

@Override

public void produce() {

System.out.println(“制造船”);

}

@Override

public void sell() {

System.out.println(“销售船”);

}

}

一个汽车厂:

public class CarFactory extends Factory{

@Override

public void produce() {

System.out.println(“生产汽车”);

}

@Override

public void sell() {

System.out.println(“销售汽车”);

}

}

测试:

Factory factory = new CarFactory();

factory.operation();

输出的是汽车厂的生产和销售活动。

但是现在问题来了,以这样的架构设计,如果有一天行业和市场发生变化,要开设一家制造手机的手机工厂,那以前创建和运转良好的船厂、汽车厂已有的资源均不能使用。工厂要转型生产手机,则需要重新布置手机生产的产线。换言之,以前那套架构转型成本太高,缺乏资源的复用,这是痛点。有没有一种连接(桥接、桥梁)办法,实现高内聚,低耦合工厂和产品?


现在开始改进。

先把工厂生产和销售的对象抽象成Product模型:

public abstract class Product {

/**

  • 产品生产

*/

public abstract void produce();

/**

  • 产品销售

*/

public abstract void sell();

}

抽象工厂,传入一个什么样的产品就生产和销售该产品:

public abstract class Factory {

private Product product;

public Factory(Product product) {

this.product = product;

}

public void setProduct(Product product) {

this.product = product;

}

/**

  • 工厂运营。

*/

public void operation() {

product.produce();

product.sell();

}

}

具体的工厂实现:

public class SomeFactory extends Factory{

public SomeFactory(Product product) {

super(product);

}

}

那么原先的船和汽车作为产品的角色,分别抽象定义:

public class Boat extends Product {

@Override

public void produce() {

System.out.println(“生产船”);

}

@Override

public void sell() {

System.out.println(“销售船”);

}

}

public class Car extends Product{

@Override

public void produce() {

System.out.println(“生产汽车”);

}

@Override

public void sell() {

System.out.println(“销售汽车”);

}

}

测试:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后总结我的面试经验

2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。

另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。

BAT面试经验

实战系列:Spring全家桶+Redis等

其他相关的电子书:源码+调优

面试真题:


《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
面试经验

实战系列:Spring全家桶+Redis等

[外链图片转存中…(img-H6GE7Id6-1713175122525)]

其他相关的电子书:源码+调优

[外链图片转存中…(img-G0kIg39p-1713175122526)]

面试真题:

[外链图片转存中…(img-u2elnUT1-1713175122526)]

[外链图片转存中…(img-yQ88zaYA-1713175122526)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值