wordpress站点前台请求数过多,公司注册资金实缴新政策出台2024,搜狗是哪个公司开发的,外贸网站推广概念
抽象和现实之间搭建桥梁#xff0c;分离实现和抽象。
抽象#xff08;What#xff09;实现#xff08;How#xff09;用户可见系统正常工作的底层代码产品付款方式定义数据类型的类。处理数据存储和检索的类
角色介绍
Abstraction#xff1a;抽象 定义抽象接口分离实现和抽象。
抽象What实现How用户可见系统正常工作的底层代码产品付款方式定义数据类型的类。处理数据存储和检索的类
角色介绍
Abstraction抽象 定义抽象接口通常包含对实现接口的引用。Refined Abstraction扩展抽象对抽象的扩展可以是抽象类的子类或具体实现类。Implementor实现定义实现接口提供基本操作的接口。Concrete Implementor具体实现实现实现接口的具体类。
UML 代码实现
abstract class Product(payment: Payment) {abstract fun purchase()
}/*** 图书*/
class Book(private val payment: Payment) : Product(payment) {override fun purchase() {payment.processPayment()println(Purchase book)}
}/*** 电子书*/
class Electronics(private val payment: Payment) : Product(payment) {override fun purchase() {payment.processPayment()println(Purchase electronics)}
}
interface Payment {fun processPayment()
}
/*** 信用卡支付*/
class CreditCartPayment() : Payment {override fun processPayment() {println(Processing credit card payment)}
}/*** 微信支付*/
class WeCharPayment() : Payment {override fun processPayment() {println(Processing wechat payment)}
}/*** 新增现金支付*/
class CashPayment() : Payment {override fun processPayment() {println(Processing cash payment)}
}fun main() {val creditCart: Payment CreditCartPayment()val wechat: Payment WeCharPayment()val cash: Payment CashPayment()val electronics Electronics(creditCart)electronics.purchase()val book Book(wechat)book.purchase()val book1 Book(cash)book1.purchase()
}优缺点
优点
让抽象和实现独立灵活和扩展的架构增加代码复用性可读性和可维护性简化测试和调试
缺点
增加复杂度更多的规划和设计工作不必要的抽象和冗余代码可读性降低
应用场景
隐藏实现细节避免抽象和实现的绑定运行时切换实现和动态配置提高代码可扩展性。
GUI框架用户界面和实现分离绘图程序形状、颜色线条分离以支持不同的组合。数据库驱动系统数据api和增删查改分离支持不同的数据库。
总结
和适配器模式区别代理模式是一种架构设计适用于前期设计而适配器模式是基于已有代码出现了不兼容将不兼容的接口连接起来。 参考
桥接模式Bridge Pattern-最通俗易懂的案例_bridge 模式例子_你上来晒太阳的的博客-CSDN博客桥接模式 — 举例子经典