Design design Pattern C # language Description-Adapter (Adapter) mode
* This article refers to "Java and the pattern" part of the content, suitable for the design pattern of beginners.
The adapter pattern transforms the interface of a class into another interface that the client expects, so that two classes that cannot work together because of an interface mismatch can work together. Includes the adapter pattern of the class and the adapter pattern of the object in two different ways.
The adapter mode of the class converts the API of the applicable class to the API of the target class, and its static structure is shown as follows:
The role of the pattern is as follows:
Destination (target) Role: This is the desired interface. Note that the adapter pattern for the class is discussed here, so the target cannot be a class.
Source (adaptee) role: An interface that needs to be fit.
Adapter (Adapter) Role: Converts the source interface to the target interface.
Target;
public interface Target
{
void SampleOperation1 ();
void SampleOperation2 ()//Method not included by the source class
}//End INTERFACE DEFINITION Target
Adaptee;
public class Adaptee
{
public void SampleOperation1 ()
{
}
}//End CLASS DEFINITION adaptee
Adapter;
public class Adapter:adaptee,target
{
public void SampleOperation2 ()
{
}
}//End CLASS DEFINITION Adapter
The effect of the adapter pattern for the class:
Use a specific class to fit the source into the target, so that if the source and the subclass of the source use this kind of fit, it doesn't work.
Because the adapter class is a subclass of the source, some methods can be substituted for the (Override) source in the adapter class.
Similar to the adapter pattern of the class, the object's adapter pattern converts the API of the applicable class to the API for the target class, unlike the class's adapter pattern, where the object's adapter pattern is not connected to the Adaptee class using an inheritance relationship, but instead uses a delegate relationship, as shown in the class diagram:
Target;
public interface Target
{
void SampleOperation1 ();
void SampleOperation2 ();
}//End INTERFACE DEFINITION Target
Adaptee;
public class Adaptee
{
public void SampleOperation1 ()
{
}
}//End CLASS DEFINITION adaptee
Adapter:
public class Adapter:target
{
Private Adaptee adaptee;
public void Adapter (Adaptee adaptee)
{
This.adaptee=adaptee;
}
public void SampleOperation1 ()
{
Adaptee.sampleoperation1 ();
}
public void SampleOperation2 ()
{
}
}//End CLASS DEFINITION Adapter
Effect of Object Adapter pattern:
An adapter can fit a variety of different sources to the same target. That is, the same adapter can fit both the source class and its subclasses to the target interface.
The way to replace a source class is not easy compared to a class adapter. If you have to replace the source class method, you have to do a subclass of the source class, the method is replaced, and then the source class as a real source of the child-class fit.
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.