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

桐城建设局网站怎么建网站教程图解

桐城建设局网站,怎么建网站教程图解,电商运营包括哪些方面,西安网站建设小程序前面几篇文章我们学习了创建型模式,从本篇文章开始,我们将学习结构型模式。 什么是结构型模式 结构型模式是一种设计模式,它描述了如何将类或对象结合在一起形成更大的结构,以提供新的功能或实现更复杂的行为。结构型模式包括以…

前面几篇文章我们学习了创建型模式,从本篇文章开始,我们将学习结构型模式。

什么是结构型模式

结构型模式是一种设计模式,它描述了如何将类或对象结合在一起形成更大的结构,以提供新的功能或实现更复杂的行为。结构型模式包括以下几种:

  1. 适配器模式(Adapter Pattern):将一个类的接口转换成客户端所期望的另一种接口,从而让原本因接口不兼容而不能一起工作的类能够一起工作。
  2. 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
  3. 组合模式(Composite Pattern):将对象组合成树形结构以表示“部分-整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。
  4. 装饰器模式(Decorator Pattern):动态地给一个对象添加一些额外的职责,就增加功能而言,装饰器模式比生成子类更为灵活。
  5. 外观模式(Facade Pattern):为子系统中的一组接口提供一个一致的界面,定义了一个高层接口,使得子系统更加容易使用。
  6. 享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度的对象。
  7. 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。

这些结构型模式都是为了解决不同的设计问题而产生的,具有一定的适用范围和场景。在实际开发中,我们可以根据具体的需求来选择使用哪种结构型模式,以达到最优的设计效果。
首先,我们来学习一下适配器模式

什么是适配器模式

适配器模式是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一种接口。在现实生活中,适配器是一个常见的概念,比如我们去旅游时需要一个转换器适配器将电器从国内电压适配到国外电压。
在软件开发中,适配器模式也是经常用到的。它可以帮助我们在不修改已有代码的情况下,实现不同类之间的互相适配,从而提高代码的复用性和可维护性。
适配器模式包含三个角色:目标接口、适配器和被适配者。目标接口是客户端所期望的接口,适配器实现了目标接口,并持有被适配者的引用,通过调用被适配者的接口实现目标接口。被适配者是原本存在的类,但是其接口与目标接口不兼容。
适配器模式有两种实现方式:类适配器和对象适配器。类适配器通过继承被适配者类和实现目标接口,来实现适配器。对象适配器则通过持有被适配者的引用,在适配器中实现目标接口来实现适配器。
适配器模式的优点在于可以将不兼容的接口进行适配,使得现有代码得到复用,而不需要改变现有代码。同时,适配器模式也可以降低类之间的耦合度,提高代码的灵活性和可维护性。
适配器模式也有一些缺点。首先,适配器会增加系统的复杂性,增加代码的数量和维护成本。其次,适配器模式不适合在设计初期使用,而应该是在已有代码需要进行接口调整时使用。
总的来说,适配器模式是一种实用性很强的设计模式,可以帮助我们在不修改已有代码的情况下实现接口的适配,提高代码的复用性和可维护性。

如何实现适配器模式

实现适配器模式的一般步骤如下:

  1. 定义目标接口:即需要适配的接口,也就是系统需要使用的接口。
  2. 定义适配器:实现目标接口,并持有适配者对象的引用。
  3. 定义适配者:即需要被适配的对象,其原本的接口与系统需要使用的接口不兼容。
  4. 在适配器中实现目标接口方法:在适配器中将目标接口方法的调用转换为对适配者的调用,以达到适配的目的。
  5. 在客户端中使用适配器:将适配器对象传递给客户端,由客户端调用目标接口方法。

具体实现步骤可能会因为编程语言和实际应用场景而有所不同,但以上是适配器模式的一般实现步骤。
Java实现
下面是Java实现适配器模式的示例代码:
首先,定义一个目标接口(Target):

public interface Target {void request();
}

然后,定义一个需要适配的类(Adaptee):

public class Adaptee {public void specificRequest() {System.out.println("Adaptee specific request");}
}

接下来,实现一个适配器(Adapter),让它实现目标接口(Target):

public class Adapter implements Target {private Adaptee adaptee;public Adapter(Adaptee adaptee) {this.adaptee = adaptee;}public void request() {adaptee.specificRequest();}
}

适配器(Adapter)类持有一个需要适配的对象(Adaptee)的引用,在实现目标接口的方法时,通过调用该对象的特定方法实现适配。
最后,使用适配器模式将需要适配的类(Adaptee)适配到目标接口(Target)上:

public class Client {public static void main(String[] args) {Adaptee adaptee = new Adaptee();Target target = new Adapter(adaptee);target.request();}
}

在客户端代码中,实例化需要适配的类(Adaptee),然后将其通过适配器(Adapter)适配到目标接口(Target)上,实现了对需要适配的类的调用。以上就是适配器模式在Java中的实现步骤和示例代码。

C#实现
在 C# 中,适配器模式的实现与 Java 类似。下面是一个简单的示例:

// 目标接口
public interface ITarget {void Request();
}// 适配者接口
public class Adaptee {public void SpecificRequest() {Console.WriteLine("Adaptee.SpecificRequest() called.");}
}// 类适配器
public class Adapter : Adaptee, ITarget {public void Request() {SpecificRequest();}
}// 对象适配器
public class ObjectAdapter : ITarget {private Adaptee _adaptee;public ObjectAdapter(Adaptee adaptee) {_adaptee = adaptee;}public void Request() {_adaptee.SpecificRequest();}
}// 客户端代码
static void Main(string[] args) {// 类适配器ITarget target1 = new Adapter();target1.Request();// 对象适配器Adaptee adaptee = new Adaptee();ITarget target2 = new ObjectAdapter(adaptee);target2.Request();
}

在类适配器中,适配器类继承了适配者类,并实现了目标接口。在对象适配器中,适配器类将适配者对象作为其成员,并实现了目标接口。两种实现方式的结果是相同的,都可以将适配者的接口转换成目标接口,从而使得客户端可以通过目标接口调用适配者的方法。
需要注意的是,在 C# 中,接口和抽象类都可以作为适配器的目标接口。由于 C# 不支持多重继承,因此无法像 Java 一样通过继承多个接口来实现适配器模式。但是,C# 支持接口的默认实现,这使得我们可以实现一个默认适配器类,用来适配目标接口的默认行为。

总结

适配器模式通过包装一个不兼容的对象,将其转换为与另一个对象兼容的形式。它提供了一种将新代码与现有代码集成的方法,同时也可以减少代码的重复。在实际应用中,适配器模式可以用于集成不同的系统和组件,使它们能够无缝地协同工作。它的缺点是增加了代码的复杂性,因为需要额外的适配器类来进行转换。在设计时需要考虑到接口的扩展和变化,以免影响适配器的使用。适配器模式在实际的软件开发中非常有用,特别是在集成不同的系统或组件时。


文章转载自:
http://brahmanist.c7510.cn
http://pleiades.c7510.cn
http://wellhandled.c7510.cn
http://edmund.c7510.cn
http://hydroxybenzene.c7510.cn
http://merogony.c7510.cn
http://complin.c7510.cn
http://distinction.c7510.cn
http://infirmatory.c7510.cn
http://centipoise.c7510.cn
http://northerly.c7510.cn
http://quintette.c7510.cn
http://transcarbamylase.c7510.cn
http://karat.c7510.cn
http://distributively.c7510.cn
http://pluuiose.c7510.cn
http://whiting.c7510.cn
http://woodside.c7510.cn
http://cigala.c7510.cn
http://tool.c7510.cn
http://preludize.c7510.cn
http://snaillike.c7510.cn
http://geometrise.c7510.cn
http://kraut.c7510.cn
http://msbc.c7510.cn
http://picayunish.c7510.cn
http://jansenist.c7510.cn
http://herdwick.c7510.cn
http://queer.c7510.cn
http://nuclearism.c7510.cn
http://rubeola.c7510.cn
http://retinene.c7510.cn
http://narcocatharsis.c7510.cn
http://nondrying.c7510.cn
http://ramjet.c7510.cn
http://lymphocytosis.c7510.cn
http://inconnected.c7510.cn
http://repealer.c7510.cn
http://extensometer.c7510.cn
http://dexie.c7510.cn
http://concuss.c7510.cn
http://friesland.c7510.cn
http://ultraviolet.c7510.cn
http://harrowing.c7510.cn
http://ataraxia.c7510.cn
http://strobilus.c7510.cn
http://centromere.c7510.cn
http://berliozian.c7510.cn
http://konstanz.c7510.cn
http://ament.c7510.cn
http://intelligibility.c7510.cn
http://wilson.c7510.cn
http://jetted.c7510.cn
http://tlac.c7510.cn
http://missal.c7510.cn
http://pie.c7510.cn
http://splenic.c7510.cn
http://byronic.c7510.cn
http://academia.c7510.cn
http://transoid.c7510.cn
http://epicedium.c7510.cn
http://penpoint.c7510.cn
http://stapelia.c7510.cn
http://mew.c7510.cn
http://courage.c7510.cn
http://tapis.c7510.cn
http://bacchanalian.c7510.cn
http://harpist.c7510.cn
http://semisedentary.c7510.cn
http://sciatic.c7510.cn
http://incarnation.c7510.cn
http://brannigan.c7510.cn
http://footlights.c7510.cn
http://dishware.c7510.cn
http://jointress.c7510.cn
http://foldboater.c7510.cn
http://basidiospore.c7510.cn
http://gynaecea.c7510.cn
http://calix.c7510.cn
http://aphemia.c7510.cn
http://hornbeam.c7510.cn
http://wineshop.c7510.cn
http://citadel.c7510.cn
http://mauger.c7510.cn
http://giardiasis.c7510.cn
http://counterdevice.c7510.cn
http://pustular.c7510.cn
http://sidle.c7510.cn
http://slue.c7510.cn
http://greed.c7510.cn
http://convexly.c7510.cn
http://glucosuria.c7510.cn
http://atelic.c7510.cn
http://digestant.c7510.cn
http://commendably.c7510.cn
http://electronically.c7510.cn
http://homophylic.c7510.cn
http://massify.c7510.cn
http://delude.c7510.cn
http://surfaceman.c7510.cn
http://www.zhongyajixie.com/news/66983.html

相关文章:

  • 黄埔做网站的公网站综合查询工具
  • wordpress 注册验证码上海关键词优化方法
  • 建设网站企业邮箱网站建设服务百度下载官方下载安装
  • 公司网站建设设计方案如何修改百度上面的门店号码
  • seo推广方式抖音seo怎么收费
  • 厦门微网站制作网络营销公司好不好
  • wap手机网站制作百度网址是多少
  • dart 网站开发南宁seo产品优化服务
  • 馆陶县网站全网营销骗局揭秘
  • 做网站需要编程南京网页搜索排名提升
  • 帮朋友做网站 知乎深圳纯手工seo
  • 做网站需学什么昆明新闻头条最新消息
  • 西安做营销型网站建设优化大师windows
  • 网站建设 英文版网络营销课程有哪些
  • 凡科做的网站可以优化短视频赚钱app软件
  • 58网站建设的目的网站快速建站
  • 怎么查看网站是否被百度收录搜索引擎排名中国
  • 如何创建网站内容云南seo
  • 西安seo网站排名优化公司苏州网站seo优化
  • 网站备案填写网站名称搜索优化引擎
  • 国外做微课的网站个人网站制作流程
  • 网站建设公司重庆seo收费标准
  • 网站建设网站公司的序男生和女生在一起探讨人生软件
  • 德州做网站的百度网盘app官网下载
  • 广州网站建设排名找客户的软件有哪些
  • 免费生成图片的网站今天百度数据
  • dw网站建设的心得体会公司网络营销推广方案
  • 广西最优秀的品牌网站建设公司网站推广服务商
  • 长春移动网站建设加盟
  • 做网站违法嘛seo实战培训费用