7 the Adapter and Facade Patterns Being Adaptive

本文深入探讨了适配器模式和装饰器模式在面向对象设计中的作用,阐述了它们如何帮助软件组件相互协作,克服因接口不兼容导致的问题。适配器模式通过转换一个类的接口来匹配客户期望的接口,而装饰器模式则在不改变原有对象的情况下添加额外责任。两者都遵循良好的设计原则,灵活地适应不同场景需求。

The Adapter Pattern's role is to convert one interface into another.

The Adapter Pattern converts the interface of a class into another interface the clients expect.Adapter lets classes work together that couldn't otherwise because of incompatible interfaces.

This acts to decouple the client from the implemented interface,and if we expect the inerface to change over time,the adapter encapsulates that change so that the client doesn't have to be modified each time it needs to operate against a different interface.



 

 

The Adapter Pattern is full of good OO design principles:check out the use of object composition to wrap the adaptee with an altered interface.This approach has the added advantage that we can use an adapter with any subclass of the adaptee.

Also check out how the pattern binds the client to an interface,not an implementating;we could use several adapters,each converting a different backend set of classes.Or,we could add new implementations after the fact,as long as they adhere to the Target interface.

 

 

There are actually tow kinds of adapters:obect adapters and class adapters(multiple inheritance to implement it).

 

class adapters:



 The only difference is that with class adapter we subclass the Target and the Adaptee,while with object datpter we use composition to pass requests to an Adaptee.

Obect adapters and class adapters use tow different means of adapting the adaptee(composition versuse inheritance).



 

 

 

Obect Adapter

Because I use composition I've got a leg up.I can not only adapt an adaptee class,but any of its subclasses.(因为组合采用接口,比如构造器中传入的是接口,那么所有实现了这个接口的类都可以使用该适配器)

Class Adapter

That's true,I do have trouble with that because I am committed to one specific adaptee class,but I have a huge advantage because I don't have to reimplement my entire adaptee.I can also override the behavior of my adaptee if I need to because I'm just subclassing.(另一个问题是adaptee应该是一早就存在的,你要使用适配器模式,是因为突然发现你现有的实现不能适应adaptee)

Object Adapter

In my part of the world,we like to use composition over inheritance;you may be saving a few lines of code,but all I'm doing is writing a little code to delegate to the adaptee.We like to keep things flexible.

Class Adapter

Flexible maybe,efficient?No.Using a class adapter there is just one of me,not an adapter and an adaptee.

Object Adapter

You're worried about one little object?You might be able to quickly override a method,but any behavior I add to my adapter code works with my adaptee class and all its subclasses.

Class Adapter

Yeah,but what if a subclass of adaptee adds some new behavior.Then what?

Object Adapter

Hey,come on,cut me a break,I just need to compose with the subclass to make that work.

Class Adapter

Sounds messy....

Object Adapter

You wanna see messy?Look in the mirror!

 

 

 

when a Decorator is involved there's going to be some new responsibilities or behaviors added to your design.

 

 

 

 a pattern that alters an interface,but for a different reason:to simplify the interface.

It's aptly named the Facade Pattern because this pattern hides all the complexity of one or more classes behind a clean,well-lit facade.

 

Decorator Doesn't alter the interface,but adds responsibility.

Adapter    Converts one interface to another

Facade     Makes an interface simpler

 

 



 

 

 

 

提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论进行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习和研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法进行了智能调整,提高控制精度和稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能和输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习和修改: 通过阅读模型中的注释和查阅相关文献,加深对BP神经网络与PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值