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

网站备案幕布下载做某个网站接口违法

网站备案幕布下载,做某个网站接口违法,flash个人网站片头,go语言 做网站上一篇《适配器模式》 下一篇《装饰器模式》 简介: 桥接模式,它是一种结构型设计模式,它的主要目的是将抽象部分与具体实现部分分离,使它们都可以独立地变化。…

上一篇《适配器模式》                                                                 下一篇《装饰器模式》

简介:

桥接模式,它是一种结构型设计模式,它的主要目的是将抽象部分与具体实现部分分离,使它们都可以独立地变化。桥接模式通过使用封装、聚合及继承等行为让不同的类承担不同的职责,从而把抽象(Abstraction)与行为实现(Implementation)分离开来,以保持各部分的独立性以及应对他们的功能扩展。

桥接模式的结构包括以下主要角色:
1、抽象类(AbstractClass):定义了抽象接口,并实现了部分功能。
2、具体实现类(ConcreteClass):实现了抽象类所定义的具体接口,完成抽象类的功能实现。
3、桥接类(BridgeClass):将抽象类和具体实现类连接起来,使得它们可以独立地变化。

桥接模式的使用场景:
1、系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系。此时,可以通过桥接模式使他们在抽象层建立一个关联关系。
2、系统不希望使用继承或因为多层次继承导致系统类的个数急剧增加时。
3、一个类存在两个独立变化的维度,而这两个维度都需要进行扩展。

桥接模式的创建步骤:
1、创建抽象类(AbstractClass),它定义了抽象接口,并实现了部分功能。
2、创建具体实现类(ConcreteClass),它实现了抽象类所定义的具体接口,完成抽象类的功能实现。
3、创建桥接类(BridgeClass),它将抽象类和具体实现类连接起来,使得它们可以独立地变化。

桥接模式的优点,主要包括:
1、分离抽象及其实现部分:桥接模式通过将抽象部分与实现部分分离,使得它们可以独立地变化。这种分离有助于降低对实现部分编译时刻的依赖性,当改变一个实现类时,并需要重新编译抽象类和它的客户程序。同时,接口与实现分离有助于分层,从而产生更好的结构化系统,系统的高层部分仅需知道抽象类和具体实现类即可。
2、提高可扩充性:桥接模式使得抽象类和具体实现类可以独立地变化,因此可以独立地对它们进行扩展。这种扩展能力有助于提高系统的可维护性和可重用性。
3、优秀的扩展能力:桥接模式使得抽象类和具体实现类可以独立地变化,因此可以灵活地添加新的具体实现类,以满足新的需求。这种扩展能力使得系统能够适应未来的变化和发展。

总之,桥接模式通过将抽象部分与实现部分分离,提高了系统的可维护性、可重用性和可扩展性,同时降低了系统的复杂性。

桥接模式的缺点,主要包括:
1、增加了系统的理解和设计难度。由于关联关系建立在抽象层,要求开发者一开始就针对抽象层进行设计与编程,正确识别出系统中两个独立变化的维度并不容易。
2、可能增加系统的复杂性。对于一些不希望使用继承或因为多层继承导致系统类的个数剧增的场景,可能需要考虑使用桥接模式,这会增加系统的复杂性和理解难度。

总之,桥接模式虽然可以提高系统的可维护性、可重用性和可扩展性,但也增加了系统的复杂性和理解难度。因此,在使用桥接模式时需要权衡其优缺点,根据实际需求进行选择。

示例:

一、C#桥接模式

以下是一个示例,展示了如何在C#中实现桥接模式:

using System;  namespace BridgePatternExample  
{  // 抽象类  public abstract class Abstraction  {  protected Implementor implementor;  public void SetImplementor(Implementor implementor)  {  this.implementor = implementor;  }  public abstract void Operation();  }  // 具体实现类  public class ConcreteAbstraction : Abstraction  {  public override void Operation()  {  implementor.Operation();  }  }  // 实现接口  public interface Implementor  {  void Operation();  }  // 具体实现类1  public class ConcreteImplementor1 : Implementor  {  public void Operation()  {  Console.WriteLine("Concrete Implementor 1 operation");  }  }  // 具体实现类2  public class ConcreteImplementor2 : Implementor  {  public void Operation()  {  Console.WriteLine("Concrete Implementor 2 operation");  }  }class Program  {  static void Main(string[] args)  {  Abstraction abstraction = new ConcreteAbstraction();  abstraction.SetImplementor(new ConcreteImplementor1()); // 第一个实现类操作  abstraction.Operation(); // 输出 "Concrete Implementor 1 operation"  abstraction.SetImplementor(new ConcreteImplementor2()); // 第二个实现类操作  abstraction.Operation(); // 输出 "Concrete Implementor 2 operation"  }   }   
}

二、java桥接模式

桥接模式通常通过以下方式实现:

// 抽象类  
public abstract class AbstractClass {  protected Implementor implementor;  public void setImplementor(Implementor implementor) {  this.implementor = implementor;  }  public abstract void operation();  
}  // 具体实现类  
public class ConcreteClass extends AbstractClass {  @Override  public void operation() {  implementor.operation();  }  
}  // 实现接口  
public interface Implementor {  void operation();  
}  // 具体实现类1  
public class ConcreteImplementor1 implements Implementor {  @Override  public void operation() {  System.out.println("Concrete Implementor 1 operation");  }  
}  // 具体实现类2  
public class ConcreteImplementor2 implements Implementor {  @Override  public void operation() {  System.out.println("Concrete Implementor 2 operation");  }  
}//在客户端中创建上下文对象并注入具体策略对象
public class Main {  public static void main(String[] args) {  AbstractClass abstraction = new ConcreteClass();  abstraction.setImplementor(new ConcreteImplementor1()); // 第一个实现类操作  abstraction.operation(); // 输出 "Concrete Implementor 1 operation"  abstraction.setImplementor(new ConcreteImplementor2()); // 第二个实现类操作  abstraction.operation(); // 输出 "Concrete Implementor 2 operation"}
}

三、javascript桥接模式

在JavaScript中,桥接实现方式如下:

// 抽象类  
class AbstractClass {  constructor(bridge) {  this.bridge = bridge;  }  operation() {  this.bridge.implementationOperation();  }  
}  // 具体实现类  
class ConcreteClass1 {  implementationOperation() {  console.log('ConcreteClass1 operation');  }  
}  class ConcreteClass2 {  implementationOperation() {  console.log('ConcreteClass2 operation');  }  
}  // 桥接类  
class BridgeClass extends AbstractClass {  constructor(implementation) {  super(implementation);  }  
}const bridge1 = new BridgeClass(new ConcreteClass1());  
const bridge2 = new BridgeClass(new ConcreteClass2());  bridge1.operation(); // 输出 "ConcreteClass1 operation"  
bridge2.operation(); // 输出 "ConcreteClass2 operation"

四、C++桥接模式

以下是在C++中实现桥接模式:

#include <iostream>  // 抽象类  
class AbstractClass {  
public:  virtual void operation() = 0;  
};  // 具体实现类1  
class ConcreteClass1 : public AbstractClass {  
public:  void operation() override {  std::cout << "ConcreteClass1 operation" << std::endl;  }  
};  // 具体实现类2  
class ConcreteClass2 : public AbstractClass {  
public:  void operation() override {  std::cout << "ConcreteClass2 operation" << std::endl;  }  
};  // 桥接类  
class BridgeClass {  
public:  AbstractClass* abstract;  BridgeClass(AbstractClass* a) : abstract(a) {}  void operation() { abstract->operation(); }  
};  int main() {  AbstractClass* a = new ConcreteClass1(); // 使用具体实现类1创建抽象类的对象  BridgeClass b(a); // 使用桥接类与抽象类的对象进行交互  b.operation(); // 输出 "ConcreteClass1 operation"  delete a; // 释放内存  a = new ConcreteClass2(); // 使用具体实现类2创建抽象类的对象  b.operation(); // 输出 "ConcreteClass2 operation"  delete a; // 释放内存  return 0;  
}

五、python桥接模式

以下是在python中实现桥接模式:

from abc import ABC, abstractmethod  # 抽象类  
class AbstractClass(ABC):  @abstractmethod  def operation(self):  pass  # 具体实现类1  
class ConcreteClass1(AbstractClass):  def operation(self):  print("ConcreteClass1 operation")  # 具体实现类2  
class ConcreteClass2(AbstractClass):  def operation(self):  print("ConcreteClass2 operation")  # 桥接类  
class BridgeClass:  def __init__(self, abstract_class):  self.abstract_class = abstract_class  def operation(self):  self.abstract_class.operation()  # 使用示例:  
bridge1 = BridgeClass(ConcreteClass1())  
bridge2 = BridgeClass(ConcreteClass2())  
bridge1.operation() # 输出 "ConcreteClass1 operation"  
bridge2.operation() # 输出 "ConcreteClass2 operation"

六、go桥接模式

以下是一个示例,展示了如何在go中实现桥接模式:

package main  import "fmt"  // 抽象类  
type AbstractClass struct {  BridgeClass  
}  func (ac *AbstractClass) Operation() {  ac.BridgeClass.Operation()  
}  // 具体实现类1  
type ConcreteClass1 struct{}  func (cc1 *ConcreteClass1) Operation() {  fmt.Println("ConcreteClass1 operation")  
}  // 具体实现类2  
type ConcreteClass2 struct{}  func (cc2 *ConcreteClass2) Operation() {  fmt.Println("ConcreteClass2 operation")  
}  // 桥接类  
type BridgeClass struct {  impl interface{}  
}  func (bc *BridgeClass) Operation() {  bc.impl.Operation()  
}  func main() {  abstract := &AbstractClass{&BridgeClass{&ConcreteClass1{}}}  abstract.Operation() // 输出 "ConcreteClass1 operation"  abstract.BridgeClass.impl = &ConcreteClass2{}  abstract.Operation() // 输出 "ConcreteClass2 operation"  
}

七、PHP桥接模式

以下是一个示例,展示了如何在PHP中实现桥接模式:

<?php  // 抽象类  
abstract class AbstractClass {  protected $bridge;  public function __construct(BridgeClass $bridge) {  $this->bridge = $bridge;  }  abstract public function operation();  
}  // 具体实现类1  
class ConcreteClass1 implements AbstractClass {  public function operation() {  echo "ConcreteClass1 operation\n";  }  
}  // 具体实现类2  
class ConcreteClass2 implements AbstractClass {  public function operation() {  echo "ConcreteClass2 operation\n";  }  
}  // 桥接类  
class BridgeClass {  protected $implementation;  public function __construct(Implementation $implementation) {  $this->implementation = $implementation;  }  public function operation() {  $this->implementation->operation();  }  
}  // 使用示例:  
$bridge1 = new BridgeClass(new ConcreteClass1());  
$bridge2 = new BridgeClass(new ConcreteClass2());  
$bridge1->operation(); // 输出 "ConcreteClass1 operation"  
$bridge2->operation(); // 输出 "ConcreteClass2 operation"


《完结》

上一篇《适配器模式》                                                               下一篇《装饰器模式》          

http://www.15wanjia.com/news/159634.html

相关文章:

  • 格朗图手表网站wordpress页面内容显示默认
  • 衡阳市城市建设投资有限公司网站微分销平台登陆
  • 重庆企业网站开发方案dede网站迁移步骤
  • 怎样给公司做一个网站做推广什么是网络营销战略?网络营销战略的内容有哪些?
  • 天津网站建设多少钱门户网站开发 项目实施方案
  • 网站建设功能是什么太原网页设计培训班
  • 做企业网站需要什么资料微信网站怎么做的好处
  • 个人备案网站做商业网络设计与制作课程
  • 做吃穿住行网站酒泉建设局造价官网站
  • 网站建设的知名公司网站免费打包
  • 做微整的网站做网站西美花街
  • 网站建设规划任务书wordpress在页面里写文章
  • 网站接入服务 公司单一产品做网站
  • cdn如何做网站统计上海旧房翻新装修哪家好
  • 医院网站开发公司华梦服饰网站建设中
  • 网站栏目一般有哪些建设网站的网址
  • 网站有什么用做电商的几个网站吗
  • 阿里云做电影网站西安seo服务培训
  • wp企业网站模板莆田市网站建设
  • 制作网站软件排行榜专业餐饮vi设计公司
  • php网站后台制作教程温州网页模板建站
  • 网站数据库怎么做同步吗直播网站排名
  • 茂名模板建站代理网站建设公司浩森宇特
  • 贵州贵阳建网站的电话这几年做那个网站能致富
  • 加强信息管理 维护网站建设建网站需要钱吗
  • 多多返利网站建设程序广州微网站建设服务
  • 电商网站后台功能公司网站域名备案流程
  • 做平面设计应该在哪个网站求职常州经开区建设局网站
  • 新网站如何做推广软文开发一个电商app软件多少钱
  • p2p网站建设要点企业seo案例