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

沧州网站制作费用广州百度快速优化排名

沧州网站制作费用,广州百度快速优化排名,搭建网站用什么语言,广州市网站公司大家好!本节主要介绍设计模式中的外观模式。 简介: 外观模式,它是一种设计模式,它为子系统中的一组接口提供一个统一的、简单的接口。这种模式主张按照描述和判断资料来评价课程,关键活动是在课程实施的全过程中进行…

大家好!本节主要介绍设计模式中的外观模式。

简介:

外观模式,它是一种设计模式,它为子系统中的一组接口提供一个统一的、简单的接口。这种模式主张按照描述和判断资料来评价课程,关键活动是在课程实施的全过程中进行观察和搜集意见,以了解人们对课程的不同看法。

外观模式的使用场景:
1、当你需要为一个复杂的子系统提供一个简单的接口时。它允许你简化一些复杂的操作或过程,使得在使用这个子系统时无需了解其内部细节。
2、当你的系统需要与其他系统进行交互时。通过为外部系统提供一个统一的接口,可以使得内部子系统与外部系统的交互更加简单和直接。
3、当你需要对一个大型遗留系统进行维护和扩展时。这种情况下,为新系统创建一个外观类可能更为实用,它可以封装原有系统的复杂性,并为新系统提供简单的接口。
这种模式在设计和开发过程中可以发挥很大的作用,帮助开发者更好地组织和管理代码,提高系统的可维护性和可扩展性。

外观模式的创建步骤:
1、定义一个外观类(Facade),这个类将为子系统中的每个类定义一个方法。
2、在外观类中,定义一些方法,这些方法将被客户端调用。这些方法将被子系统中的类实现。
3、在客户端代码中,使用外观类的方法来调用子系统中的方法。

外观模式的优点,主要包括:
1、简化子系统使用:为子系统提供了一个简单的接口,使得客户端可以更容易地使用子系统而无需了解其内部细节。
2、增强了子系统的松耦合:通过外观类,将客户端与子系统之间的关系解耦,客户端只需要和外观类进行交互,无需直接和子系统中的类打交道。
3、增加了安全性:通过将子系统的内部实现细节隐藏在外观类之后,可以防止客户端直接访问和修改子系统的内部状态。
4、隐藏子系统实现:外观模式隐藏了子系统的实现细节,只向客户端暴露必要的接口,从而保护了子系统的完整性。
5、提高了代码的可读性和可维护性:通过使用外观模式,代码变得更加结构化,易于阅读和维护。
6、减少了客户端和子系统之间的代码复杂度:通过将客户端和子系统之间的复杂交互抽象为一个或几个简单的方法调用,减少了客户端和子系统之间的代码复杂度。
7、符合迪米特法则:外观模式符合迪米特法则(最少知道原则),使得客户端需要处理的类数量减少,降低了系统的耦合性。

外观模式的缺点,主要包括:
1、子系统扩展风险:当子系统需要扩展时,可能会对原有系统的功能造成影响。
2、不符合开闭原则:在需要修改子系统时,可能也需要修改外观类,这不符合开闭原则。
3、降低了子系统的可维护性:外观模式使得子系统的内部结构和实现细节更加难以被了解和维护。
4、增加了代码的复杂性:外观模式的实现需要增加额外的类和方法,这会增加代码的复杂性和维护难度。
5、降低了代码的可读性:如果外观类的设计和实现不够清晰,可能会使得代码的可读性更加困难。
6、增加了额外的开销:外观模式的实现和运行需要额外的开销,例如需要额外的方法调用和处理等。

示例:

一、C#外观模式

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

public interface ISubsystem1  
{  void Operation1();  
}  public interface ISubsystem2  
{  void Operation2();  
}  public interface ISubsystem3  
{  void Operation3();  
}  public class Subsystem1 : ISubsystem1  
{  public void Operation1()  {  Console.WriteLine("Subsystem1.Operation1");  }  
}  public class Subsystem2 : ISubsystem2  
{  public void Operation2()  {  Console.WriteLine("Subsystem2.Operation2");  }  
}  public class Subsystem3 : ISubsystem3  
{  public void Operation3()  {  Console.WriteLine("Subsystem3.Operation3");  }  
}  public class Facade  
{  private ISubsystem1 _subsystem1;  private ISubsystem2 _subsystem2;  private ISubsystem3 _subsystem3;  public Facade()  {  _subsystem1 = new Subsystem1();  _subsystem2 = new Subsystem2();  _subsystem3 = new Subsystem3();  }  public void SimpleOperation()  {  _subsystem1.Operation1();  _subsystem2.Operation2();  _subsystem3.Operation3();  }  
}public class Client {  public void test() {  Facade facade = new Facade();  facade.SimpleOperation();  }  
}

二、java外观模式

外观模式通常通过以下方式实现:

// 子系统中的组件类  
class SubsystemComponent1 {  public void operation1() {  System.out.println("SubsystemComponent1.operation1");  }  
}  class SubsystemComponent2 {  public void operation2() {  System.out.println("SubsystemComponent2.operation2");  }  
}  class SubsystemComponent3 {  public void operation3() {  System.out.println("SubsystemComponent3.operation3");  }  
}  // 外观类  
class Facade {  private SubsystemComponent1 component1;  private SubsystemComponent2 component2;  private SubsystemComponent3 component3;  public Facade() {  component1 = new SubsystemComponent1();  component2 = new SubsystemComponent2();  component3 = new SubsystemComponent3();  }  public void simplifiedOperation() {  component1.operation1();  component2.operation2();  component3.operation3();  }  
}  // 客户端代码  
public class Client {  public static void main(String[] args) {  Facade facade = new Facade();  facade.simplifiedOperation();  }  
}

三、javascript外观模式

在JavaScript实现外观模式的示例:

// 子系统中的组件  
const Component1 = {  operation1: function() {  console.log('Component1.operation1');  }  
};  const Component2 = {  operation2: function() {  console.log('Component2.operation2');  }  
};  const Component3 = {  operation3: function() {  console.log('Component3.operation3');  }  
};  // 外观类  
const Facade = {  constructor() {  this.component1 = new Component1;  this.component2 = new Component2;  this.component3 = new Component3;  },  simplifiedOperation: function() {  this.component1.operation1();  this.component2.operation2();  this.component3.operation3();  }  
};  // 客户端代码  
const facade = new Facade;  
facade.simplifiedOperation(); // 输出:Component1.operation1 Component2.operation2 Component3.operation3

四、C++外观模式

以下是在C++中实现外观模式:

#include <iostream>  // 子系统中的组件类  
class Component1 {  
public:  void operation1() {  std::cout << "Component1.operation1" << std::endl;  }  
};  class Component2 {  
public:  void operation2() {  std::cout << "Component2.operation2" << std::endl;  }  
};  class Component3 {  
public:  void operation3() {  std::cout << "Component3.operation3" << std::endl;  }  
};  // 外观类  
class Facade {  
public:  Facade() {  component1 = new Component1;  component2 = new Component2;  component3 = new Component3;  }  ~Facade() {  delete component1;  delete component2;  delete component3;  }  void simplifiedOperation() {  component1->operation1();  component2->operation2();  component3->operation3();  }  private:  Component1* component1;  Component2* component2;  Component3* component3;  
};  // 客户端代码  
int main() {  Facade facade;  facade.simplifiedOperation(); // 输出:Component1.operation1 Component2.operation2 Component3.operation3  return 0;  
}

五、python外观模式

以下是在python中实现外观模式:

# 子系统中的组件  
class Component1:  def operation1(self):  print("Component1.operation1")  class Component2:  def operation2(self):  print("Component2.operation2")  class Component3:  def operation3(self):  print("Component3.operation3")  # 外观类  
class Facade:  def __init__(self):  self.component1 = Component1()  self.component2 = Component2()  self.component3 = Component3()  def simplified_operation(self):  self.component1.operation1()  self.component2.operation2()  self.component3.operation3()  # 客户端代码  
if __name__ == '__main__':  facade = Facade()  facade.simplified_operation() # 输出:Component1.operation1 Component2.operation2 Component3.operation3

六、go外观模式

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

// 子系统中的组件  
type Component1 struct{}  func (c *Component1) Operation1() {  fmt.Println("Component1.Operation1")  
}  type Component2 struct{}  func (c *Component2) Operation2() {  fmt.Println("Component2.Operation2")  
}  type Component3 struct{}  func (c *Component3) Operation3() {  fmt.Println("Component3.Operation3")  
}  // 外观类  
type Facade struct {  component1 *Component1  component2 *Component2  component3 *Component3  
}  func (f *Facade) SimpleOperation() {  f.component1.Operation1()  f.component2.Operation2()  f.component3.Operation3()  
}  // 客户端代码  
func main() {  facade := &Facade{  component1: &Component1{},  component2: &Component2{},  component3: &Component3{},  }  facade.SimpleOperation() // 输出:Component1.Operation1 Component2.Operation2 Component3.Operation3  
}

七、PHP外观模式

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

<?php  // 子系统中的类  
class Subsystem1 {  public function operation1() {  echo "Subsystem1.operation1\n";  }  
}  class Subsystem2 {  public function operation2() {  echo "Subsystem2.operation2\n";  }  
}  class Subsystem3 {  public function operation3() {  echo "Subsystem3.operation3\n";  }  
}  // 外观类  
class Facade {  private $subsystem1;  private $subsystem2;  private $subsystem3;  public function __construct() {  $this->subsystem1 = new Subsystem1();  $this->subsystem2 = new Subsystem2();  $this->subsystem3 = new Subsystem3();  }  public function simplifiedOperation() {  $this->subsystem1->operation1();  $this->subsystem2->operation2();  $this->subsystem3->operation3();  }  
}  // 客户端代码  
$facade = new Facade();  
$facade->simplifiedOperation(); // 输出:Subsystem1.operation1 Subsystem2.operation2 Subsystem3.operation3  ?>

《完结》

http://www.hrbkazy.com/news/33882.html

相关文章:

  • 给公司做网站需要什么品牌推广方式
  • 天津公司网站如何制作seo描述是什么意思
  • html5做静态网站北京优化seo排名
  • 网站建设推广优化靠谱sem网络推广公司
  • php网站开发实例pdf军事最新消息
  • 建设网站最便宜多少钱百度关键词排名qq
  • 做ic哪些网站好做市场调研报告模板范文
  • 快捷的网站建设软件郑州做网站推广
  • joomla网站如何加入会话功能推广团队
  • 织梦cms可以做淘宝客网站么如何自己开发软件app
  • 营销型网站建设一般包含哪些内容短视频搜索优化
  • 丰城建设网站网络营销做得好的公司
  • 如何投诉做网站的公司收录平台
  • 工厂管理培训课程seo站内优化包括
  • 动效网站怎么做seo英文怎么读
  • 巫山做网站哪家强seo关键词排名优化
  • 企业网站群建设方案苏州搜索引擎优化
  • 山西建设工程备案网站网络推广公司官网
  • 深圳在建高铁站百度小说app下载
  • 黑龙江交通基础设施建设网站广州白云区最新信息
  • 如何做网站推广页面友情链接格式
  • 敦煌做网站 条件google谷歌搜索引擎
  • 我的免费网是个什么网站网络营销机构官方网站
  • 做资料分享网站有哪些独立站怎么搭建
  • aspcms手机网站源码网络营销郑州优化推广公司
  • 哪个网站可以做魔方图片企业宣传网站
  • 网站开发维护运维江苏网站建设制作
  • 在百度做网站需要什么资料nba在线直播免费观看直播
  • 做网站淮南高级seo是什么职位
  • 贵州两学一做网站合肥网络营销公司