This article describes the power adapter function in Java adapter mode applications. Share it for your reference, as follows:
1. Pattern definition
There are two adapter modes
1 Object Adapter Mode In this adapter mode, the adapter holds a physical entity of the class object it wraps.
Class 2 Adapter Mode In this adapter mode, the adapter inherits from the implemented class.
2. Examples of the model
1 Pattern Analysis
We borrow a pencil power adapter to illustrate this mode.
Already existing AC power laptop power adapter
2 Static modeling of adapter mode
3 Code examples
3.1 Abstract power supply establishment
package com.demo.power;/** * Power base class* * @author * */public abstract class AbsBasePower{ // Voltage value private float power; // Unit private String unit = "V"; // Construct method public AbsBasePower(float power) { this.power = power; } public float getPower() { return power; } public void setPower(float power) { this.power = power; } public String getUnit() { return unit; } public void setUnit(String unit) { this.unit = unit; }}3.2 220v power interface
package com.demo.power.v220;/** * 220V power interface* * @author * */public interface IPower220 { // 220V AC power supply printing public void output220v();}3.3 220v power supply implementation class
package com.demo.power.v220;import com.demo.power.AbsBasePower;/** * 220V power supply* * @author * */public class Power220 extends AbsBasePower implements IPower220{ // Construct method public Power220() { super(220); } // 220V power output public void output220v() { System.out.println("----This is [" + this.getPower() + this.getUnit() + "]Power!..."); }}3.4 12v power interface
package com.demo.power.v12;/** * 12V power interface* * @author * */public interface IPower12 { // 12V power supply printing public void output12v();}3.5 12v power supply implementation class
package com.demo.power.v12;import com.demo.power.AbsBasePower;/** * Normal 12V power supply* * @author * */public class Power12 extends AbsBasePower implements IPower12 { // 12V power supply construction method public Power12() { super(12); } // 12V power output public void output12v() { System.out.println("---This is [" + this.getPower() + this.getUnit() + "]Power!..."); }}3.6 12v power object adapter
package com.demo.adapter;import com.demo.power.AbsBasePower;import com.demo.power.v12.IPower12;/** * Power adapter (implements the target object interface, namely: 12V power interface) * * @author * */public class AdapterPower12 implements IPower12 { // Object to be converted private final AbsBasePower absBasePower; // Adapter construction method passes the object to be converted into public AdapterPower12(AbsBasePower absBasePower) { this.absBasePower = absBasePower; } // Implement the target object method public void output12v() { // Get the external power value float powerFloat = this.absBasePower.getPower(); // Perform power conversion if (powerFloat == 380) { // 380V power conversion powerFloat = powerFloat / 31.67f; } else if (powerFloat == 220) { // 220V power conversion powerFloat = powerFloat / 18.33f; } else if (powerFloat == 110) { // 110V power conversion powerFloat = powerFloat / 9.17f; } else { System.out.println("----cannot adapt to power!..."); return; } // Process the conversion result powerFloat = (int) (powerFloat * 10) / 10.0f; System.out.println("----This is [" + powerFloat + this.absBasePower.getUnit() + "]Power!..."); }}3.7 12v power adapter
package com.demo.adapter;import com.demo.power.AbsBasePower;import com.demo.power.v12.IPower12;/** * Power adapter (implements the target object interface, namely: 12V power interface) Class adapter mode* * @author * */public class AdapterPower12Ext extends AbsBasePower implements IPower12 { // Adapter construction method passes the object to be converted into public AdapterPower12Ext(AbsBasePower absBasePower) { super(absBasePower.getPower()); } // Implement the target object method @Override public void output12v() { // Get external power value float powerFloat = this.getPower(); // Perform power conversion if (powerFloat == 380) { // 380V power conversion powerFloat = powerFloat / 31.67f; } else if (powerFloat == 220) { // 220V power conversion powerFloat = powerFloat / 18.33f; } else if (powerFloat == 110) { // 110V power conversion powerFloat = powerFloat / 9.17f; } else { System.out.println("----cannot adapt to power!..."); return; } // Process the conversion result powerFloat = (int) (powerFloat * 10) / 10.0f; System.out.println("----This is [" + powerFloat + this.getUnit() + "]power!..."); }}3.8 Test adapter
package com.demo;import com.demo.adapter.AdapterPower12;import com.demo.adapter.AdapterPower12Ext;import com.demo.power.v12.IPower12;import com.demo.power.v12.Power12;import com.demo.power.v220.Power220;/** * Client program call* * @author * */public class Client { /** * @param args */ public static void main(String[] args) { // We first generate a 220V power supply object! Power220 power220 = new Power220(); power220.output220v(); // Next, we are generating a 12V power supply object! IPower12 power12 = new Power12(); power12.output12v(); // Finally, we use the power adapter to convert the 220V power supply to a 12V power supply! System.out.println("/n-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println("-----class adapter power adapter conversion ends!"); }}3.9 Operation results
----This is the [220.0V] power supply! ...
----This is the [12.0V] power supply! ...
----The power adapter is being converted...
----This is the [12.0V] power supply! ...
---The power adapter conversion is over!
----Adapter Power Adapter is being converted...
----This is the [12.0V] power supply! ...
----The class adapter power adapter conversion ends!
3. Design principles
1Use object combinations, interface-oriented and abstract programming
2 "Open and Close" Principle
4. Use occasions
1 When the software system structure needs to be upgraded or expanded, and does not want to affect the stable operation of the original system
2 When the difference between conversion classes is not very large
3 When you want to create a reusable class that can work in conjunction with other unrelated or unforeseeable classes
5. Static class diagram of class adapter mode and object adapter mode
For more information about Java algorithms, readers who are interested in this site can view the topics: "Java Data Structure and Algorithm Tutorial", "Summary of Java Operation DOM Node Tips", "Summary of Java File and Directory Operation Tips" and "Summary of Java Cache Operation Tips"
I hope this article will be helpful to everyone's Java programming.