当前位置: 首页 > news >正文

怎么创造一个网站网站问答平台推广方案

怎么创造一个网站,网站问答平台推广方案,wordpress 可爱插件,谷歌上怎样做网站说明 桥接模式#xff0c;也叫作桥梁模式#xff0c;英文是 Bridge Design Pattern。在 GoF 的《设计模式》一书中#xff0c;桥接模式是这么定义的#xff1a;“Decouple an abstraction from its implementation so that the two can vary independently。”翻译成中文就… 说明 桥接模式也叫作桥梁模式英文是 Bridge Design Pattern。在 GoF 的《设计模式》一书中桥接模式是这么定义的“Decouple an abstraction from its implementation so that the two can vary independently。”翻译成中文就是“将抽象和实现解耦让它们可以独立变化。” 桥接模式通过将一个类的抽象部分与实现部分分离开来使它们可以独立地进行扩展和修改。 在桥接模式中有两个核心概念 抽象部分Abstraction定义抽象部分的接口并维护一个对实现部分对象的引用。抽象部分将客户端的请求委派给实现部分进行处理。实现部分Implementation定义实现部分的接口并提供具体实现。实现部分通常是通过接口或抽象类来定义让不同的实现部分可以灵活替换。 通过桥接模式抽象部分和实现部分可以独立地发展和演化不会相互影响。这种解耦可以提高系统的灵活性和可扩展性。桥接模式常用于以下情况 当一个类拥有多个变化维度时可以使用桥接模式将每个维度抽象出来使得它们可以独立地变化。当需要在抽象部分和实现部分之间建立稳定的关联关系又希望它们可以独立地进行扩展和修改时可以使用桥接模式。 以下是桥接模式的结构示意图 #mermaid-svg-ctZQQkR9MwyVmx7G {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ctZQQkR9MwyVmx7G .error-icon{fill:#552222;}#mermaid-svg-ctZQQkR9MwyVmx7G .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ctZQQkR9MwyVmx7G .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ctZQQkR9MwyVmx7G .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ctZQQkR9MwyVmx7G .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ctZQQkR9MwyVmx7G .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ctZQQkR9MwyVmx7G .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ctZQQkR9MwyVmx7G .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ctZQQkR9MwyVmx7G .marker.cross{stroke:#333333;}#mermaid-svg-ctZQQkR9MwyVmx7G svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ctZQQkR9MwyVmx7G g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-ctZQQkR9MwyVmx7G g.classGroup text .title{font-weight:bolder;}#mermaid-svg-ctZQQkR9MwyVmx7G .nodeLabel,#mermaid-svg-ctZQQkR9MwyVmx7G .edgeLabel{color:#131300;}#mermaid-svg-ctZQQkR9MwyVmx7G .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-ctZQQkR9MwyVmx7G .label text{fill:#131300;}#mermaid-svg-ctZQQkR9MwyVmx7G .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-ctZQQkR9MwyVmx7G .classTitle{font-weight:bolder;}#mermaid-svg-ctZQQkR9MwyVmx7G .node rect,#mermaid-svg-ctZQQkR9MwyVmx7G .node circle,#mermaid-svg-ctZQQkR9MwyVmx7G .node ellipse,#mermaid-svg-ctZQQkR9MwyVmx7G .node polygon,#mermaid-svg-ctZQQkR9MwyVmx7G .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ctZQQkR9MwyVmx7G .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-ctZQQkR9MwyVmx7G g.clickable{cursor:pointer;}#mermaid-svg-ctZQQkR9MwyVmx7G g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-ctZQQkR9MwyVmx7G g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-ctZQQkR9MwyVmx7G .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-ctZQQkR9MwyVmx7G .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-ctZQQkR9MwyVmx7G .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-ctZQQkR9MwyVmx7G .dashed-line{stroke-dasharray:3;}#mermaid-svg-ctZQQkR9MwyVmx7G #compositionStart,#mermaid-svg-ctZQQkR9MwyVmx7G .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-ctZQQkR9MwyVmx7G #compositionEnd,#mermaid-svg-ctZQQkR9MwyVmx7G .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-ctZQQkR9MwyVmx7G #dependencyStart,#mermaid-svg-ctZQQkR9MwyVmx7G .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-ctZQQkR9MwyVmx7G #dependencyStart,#mermaid-svg-ctZQQkR9MwyVmx7G .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-ctZQQkR9MwyVmx7G #extensionStart,#mermaid-svg-ctZQQkR9MwyVmx7G .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-ctZQQkR9MwyVmx7G #extensionEnd,#mermaid-svg-ctZQQkR9MwyVmx7G .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-ctZQQkR9MwyVmx7G #aggregationStart,#mermaid-svg-ctZQQkR9MwyVmx7G .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-ctZQQkR9MwyVmx7G #aggregationEnd,#mermaid-svg-ctZQQkR9MwyVmx7G .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-ctZQQkR9MwyVmx7G .edgeTerminals{font-size:11px;}#mermaid-svg-ctZQQkR9MwyVmx7G :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Abstraction implementor: Implementor operation() RefinedAbstraction operation() Implementor operationImpl() ConcreteImplementorA operationImpl() ConcreteImplementorB operationImpl() Abstraction抽象化角色通过持有Implementor实现化角色的引用将操作委托给Implementor来实现。RefinedAbstraction扩充抽象化角色继承自Abstraction并可以在基础操作上添加额外的功能。Implementor实现化角色是一个接口或抽象类定义了在Abstraction中使用的操作方法。ConcreteImplementorA和ConcreteImplementorB具体实现化角色实现了Implementor接口并提供了具体的操作实现。 在桥接模式中抽象部分通过聚合或组合实现部分的对象来实现功能。通过定义抽象部分和实现部分的接口以及维护它们之间的关联关系可以实现抽象部分与实现部分的解耦和独立变化。 应用场景 在Java开源项目中桥接模式有许多应用场景。以下是其中几个示例 JDBCJava Database ConnectivityJDBC是Java中用于与数据库进行交互的API。它使用桥接模式将Java应用程序与不同数据库之间的连接进行解耦。JDBC提供了一个标准的接口即抽象部分而具体的数据库驱动程序实现则作为实现部分。这使得开发人员可以通过改变数据库驱动程序实现来与不同类型的数据库进行交互而不需要修改应用程序的代码。AWTAbstract Window Toolkit和SwingAWT和Swing是Java的图形用户界面GUI工具包。它们使用桥接模式将组件的外观如按钮、文本框与底层操作系统的窗口系统分离开来。在AWT和Swing中抽象部分是Java中的组件类而实现部分是由底层平台提供的本地窗口系统。日志库许多Java开源项目使用日志库进行日志记录。例如Log4j和Logback是常见的日志库。它们使用桥接模式将应用程序的日志记录行为与底层的日志输出目标如控制台、文件、数据库解耦。抽象部分是由日志库提供的通用日志API而实现部分是具体的日志输出目标。数据源连接池连接池被广泛用于管理数据库连接的重用。在Java中常见的开源连接池项目如HikariCP和Commons DBCP使用桥接模式来支持不同类型的数据库连接。它们提供了一个通用的连接池接口作为抽象部分而具体的数据库驱动程序实现则作为实现部分。 这些示例说明了在Java开源项目中桥接模式的应用。通过桥接模式可以将不同维度的变化解耦在代码的可扩展性和灵活性方面提供支持。 编程示例 首先定义抽象部分的接口或抽象类。这个接口或抽象类将定义高层操作或功能并将包含一个对实现部分的引用。例如 public interface Shape {void draw(); }接下来创建实现部分的接口或抽象类。这个接口或抽象类将定义实现部分的操作或功能。例如 public interface Color {void fill(); }然后实现具体的实现部分类。这些类将实现实现部分的接口或抽象类。例如 public class Red implements Color {Overridepublic void fill() {System.out.println(Filling with red color);} }public class Blue implements Color {Overridepublic void fill() {System.out.println(Filling with blue color);} }在抽象部分的接口或抽象类中添加对实现部分的引用并在其中定义具体的操作。例如 public abstract class AbstractShape implements Shape {protected Color color;public AbstractShape(Color color) {this.color color;}public abstract void draw(); }最后创建具体的抽象部分类。这些类将扩展抽象部分的接口或抽象类并实现具体的操作。例如 public class Circle extends AbstractShape {public Circle(Color color) {super(color);}Overridepublic void draw() {System.out.print(Drawing a circle. );color.fill();} }public class Rectangle extends AbstractShape {public Rectangle(Color color) {super(color);}Overridepublic void draw() {System.out.print(Drawing a rectangle. );color.fill();} }现在可以使用桥接模式来创建抽象部分和实现部分之间的桥接 // 创建实现部分的对象 Color red new Red(); Color blue new Blue();// 创建抽象部分的对象并进行桥接 Shape redCircle new Circle(red); Shape blueRectangle new Rectangle(blue);// 调用抽象部分的方法它会委派给实现部分的对象 redCircle.draw(); // Output: Drawing a circle. Filling with red color blueRectangle.draw(); // Output: Drawing a rectangle. Filling with blue color以上内容基于GPT创建和整理。 参考 设计模式之美(作者王争来自极客时间) 关于作者 来自一线全栈程序员nine的八年探索与实践持续迭代中。欢迎关注“雨林寻北”或添加个人卫星codetrend备注技术。
http://www.pierceye.com/news/424945/

相关文章:

  • 建设银行如何网站设置密码嵊州市建设银行网站
  • 陕西 网站建设福州mip网站建设
  • 让人做网站 需要准备什么网站建设国内外现状
  • 滨海做网站公司网页设计模板 中文
  • 辽源市网站建设怎么学做电商
  • 做pc端网站行情网站标签化
  • 中国做的很好的食品网站php图片网站源码
  • 做自媒体小视屏哪个网站好邹平网站建设公司
  • 字体样式 网站layui 网站建设模板
  • 沈阳网站设计江苏城乡建设部网站首页
  • 网站手机端生成wordpress如何下载
  • 网站数据抓取怎么做营销型网站开发定制
  • 福州营销型网站建设中国建设工程信息网站
  • 怎么在服务器里面做网站公司网站模板怎么做
  • 网站建设制作设计营销公司杭州石家庄网络公司哪家好
  • 重庆网站制作特点优势互联免费主机
  • 义乌网站制作多少钱wordpress有访客记录
  • 网站改版建议策划书百度搜索名字排名优化
  • 做药的常用网站wordpress加载js代码
  • 网站备案 通知杭州企业展厅设计公司
  • 简单个人网站开发代码广州白云区建设局网站
  • 网站空间控制面板软件做网站设计前景怎么样
  • 交流平台网站怎么做不了在家做网站编辑
  • 网站管理员登陆不了免费网页上传网站
  • 关于网站建设的英文歌外网设计素材网站
  • 中山比好的做网站的公司扫二维码直接进网站怎么做
  • 上海互联网网站建设东莞系统网站建设
  • 系部网站建设创新点外贸平台网站的营销方式
  • 做网站不给源代码吉林省招标网官方网站
  • 设计公司网站需要什么条件韩国能否出线