العربية  

books transformer style implementation

If you do not find what you're looking for, you can use more accurate words.

View more

تنفيذ نمط المحوّل (Info)


عند تنفيذ نمط المحوّل، للتوضيح، يمكن للمرء تطبيق اسم الصنف من صنف إلى واجهة محوّل كالتالي [ClassName]To[Interface]Adapter للتنفيذ الخاص بالمزود، على سبيل المثال DAOToProviderAdapter. يجب أن يكون لديه طريقة المنشئ مع متغير خاص بصنف المحَوَل كمعلمة. سيتم تمرير هذه المعلمة إلى مثيل عضو instance member of من (اسم-الصنف) إلى (اسم-الواجهة) للمحوّل كالتالي [ClassName]To[Interface]Adapter. عندما يتم استدعاء طريقة العميل، سيتمكن من الوصول إلى مثيل المحوَل الذي يسمح بالوصول إلى البيانات المطلوبة للمحوَل وتنفيذ العمليات على تلك البيانات التي تولد المخرجات المطلوبة.

كريستال

abstract class FormatIphone getter connector abstract def recharge abstract def use_lightning end abstract class FormatAndroid getter connector abstract def recharge abstract def use_micro_usb end class Iphone < FormatIphone def initialize @connector = false end def use_lightning @connector = true puts "Lightning connected" end def recharge if @connector puts "Recharge started" puts "Recharge finished" else puts "Connect Lightning first" Close end end class Android < FormatAndroid def initialize @connector = false end def use_micro_usb @connector = true puts "MicroUsb connected" end def recharge if @connector puts "Recharge started" puts "Recharge finished" else puts "Connect MicroUsb first" end end end class IphoneAdapter < FormatAndroid private getter mobile : FormatIphone def initialize(@mobile) end def recharge @mobile.recharge end def use_micro_usb puts "MicroUsb connected" @mobile.use_lightning end end class AndroidRecharger def initialize phone = Android.new phone.use_micro_usb phone.recharge end end class IphoneMicroUsbRecharger def initialize phone = Iphone.new phone_adapter = IphoneAdapter.new(phone) phone_adapter.use_micro_usb phone_adapter.recharge end end class IphoneRecharger def initialize phone = Iphone.new phone.use_lightning phone.recharge end end puts "Recharging android with MicroUsb Recharger" AndroidRecharger.new puts puts "Recharging iPhone with MicroUsb using Adapter pattern" IphoneMicroUsbRecharger.new puts puts "Recharging iPhone with iPhone Recharger" IphoneRecharger.new

المخرجات:

Recharging android with MicroUsb Recharger MicroUsb connected

Recharge started

Recharge finished

Recharging iPhone with MicroUsb using Adapter pattern

MicroUsb connected

Lightning connected

Recharge started

Recharge finished

Recharging iPhone with iPhone Recharger

Lightning connected

Recharge started Recharge finished

جافا

interface LightningPhone { void recharge(); void useLightning(); } interface MicroUsbPhone { void recharge(); void useMicroUsb(); } class Iphone implements LightningPhone { private boolean connector; @Override public void useLightning() { connector = true; System.out.println("Lightning connected"); } @Override public void recharge() { if (connector) { System.out.println("Recharge started"); System.out.println("Recharge finished"); } else { System.out.println("Connect Lightning first"); } } } class Android implements MicroUsbPhone { private boolean connector; @Override public void useMicroUsb() { connector = true; System.out.println("MicroUsb connected"); } @Override public void recharge() { if (connector) { System.out.println("Recharge started"); System.out.println("Recharge finished"); } else { System.out.println("Connect MicroUsb first"); } } } /* exposing the target interface while wrapping source object */ class LightningToMicroUsbAdapter implements MicroUsbPhone { private final LightningPhone lightningPhone; public LightningToMicroUsbAdapter (LightningPhone lightningPhone) { this.lightningPhone = lightningPhone; } @Override public void useMicroUsb() { System.out.println("MicroUsb connected"); lightningPhone.useLightning(); } @Override public void recharge() { lightningPhone.recharge(); } } public class AdapterDemo { static void rechargeMicroUsbPhone(MicroUsbPhone phone) { phone.useMicroUsb(); phone.recharge(); } static void rechargeLightningPhone(LightningPhone phone) { phone.useLightning(); phone.recharge(); } public static void main(String[] args) { Android android = new Android(); Iphone iPhone = new Iphone(); System.out.println("Recharging android with MicroUsb"); rechargeMicroUsbPhone(android); System.out.println("Recharging iPhone with Lightning"); rechargeLightningPhone(iPhone); System.out.println("Recharging iPhone with MicroUsb"); rechargeMicroUsbPhone(new LightningToMicroUsbAdapter (iPhone)); } }

مخرجات:

Recharging android with MicroUsb

MicroUsb connected

Recharge started

Recharge finished

Recharging iPhone with Lightning

Lightning connected

Recharge started

Recharge finished

Recharging iPhone with MicroUsb

MicroUsb connected

Lightning connected

Recharge started Recharge finished

دلفي

type ILightningPhone = interface ['{52628045-CF6C-41F0-ACCA-A65DCEE13BDC}'] procedure Recharge; procedure UseLightning; end; type IMicroUSBPhone = interface ['{436746B6-D02D-49E6-A5AC-F6D745DFD182}'] procedure Recharge; procedure UseMicroUSB; end; type TIPhone = class(TInterfacedObject, ILightningPhone) strict private FConnector: Boolean; public procedure Recharge; procedure UseLightning; end; type TAndroid = class(TInterfacedObject, IMicroUSBPhone) strict private FConnector: Boolean; public procedure Recharge; procedure UseMicroUSB; end; type TLightningToMicroUsbAdapter = class(TInterfacedObject, IMicroUSBPhone) strict private FLightningPhone: ILightningPhone; public constructor Create(const ALightningPhone: ILightningPhone); reintroduce; procedure Recharge; procedure UseMicroUSB; end; procedure RechargeLightningPhone(const ALightningPhone: ILightningPhone); begin ALightningPhone.UseLightning; ALightningPhone.Recharge; end; procedure RechargeMicroUSBPhone(const AMicroUSBPhone: IMicroUSBPhone); begin AMicroUSBPhone.UseMicroUSB; AMicroUSBPhone.Recharge; end; procedure TEdijsForm.PatternExampleButtonClick(Sender: TObject); var _Android: IMicroUSBPhone; _IPhone: ILightningPhone; _LightningToMicroUsbAdapter: IMicroUSBPhone; begin _Android := TAndroid.Create; WriteLn('Recharging android with MicroUsb'); RechargeMicroUSBPhone(_Android); _IPhone := TIPhone.Create; WriteLn('Recharging iPhone with Lightning'); RechargeLightningPhone(_IPhone); WriteLn('Recharging iPhone with MicroUsb'); _LightningToMicroUsbAdapter := TLightningToMicroUsbAdapter.Create(_IPhone); RechargeMicroUSBPhone(_LightningToMicroUsbAdapter); end;

المخرجات:

Recharging android with MicroUsb

MicroUsb connected Recharge started

Recharge finished

Recharging iPhone with Lightning

Lightning connected

Recharge started

Recharge finished

Recharging iPhone with MicroUsb

MicroUsb connected

Lightning connected

Recharge started

Recharge finished

بي أتش بي

// Adapter Pattern example interface IFormatIPhone { public function recharge(); public function useLightning(); } interface IFormatAndroid { public function recharge(); public function useMicroUsb(); } // Adaptee class IPhone implements IFormatIPhone { private $connectorOk = FALSE; public function useLightning() { $this->connectorOk = TRUE; echo "Lightning connected -$ "; } public function recharge() { if ($this->connectorOk) { echo "Recharge Started "; echo "Recharge 20% "; echo "Recharge 50% "; echo "Recharge 70% "; echo "Recharge Finished "; } else { echo "Connect Lightning first "; } } } // Adapter class IPhoneAdapter implements IFormatAndroid { private $mobile; public function __construct(IFormatIPhone $mobile) { $this->mobile = $mobile; } public function recharge() { $this->mobile->recharge(); } public function useMicroUsb() { echo "MicroUsb connected -> "; $this->mobile->useLightning(); } } class Android implements IFormatAndroid { private $connectorOk = FALSE; public function useMicroUsb() { $this->connectorOk = TRUE; echo "MicroUsb connected -> "; } public function recharge() { if ($this->connectorOk) { echo "Recharge Started "; echo "Recharge 20% "; echo "Recharge 50% "; echo "Recharge 70% "; echo "Recharge Finished "; } else { echo "Connect MicroUsb first "; } } } // client class MicroUsbRecharger { private $phone; private $phoneAdapter; public function __construct() { echo "---Recharging iPhone with Generic Recharger--- "; $this->phone = new IPhone(); $this->phoneAdapter = new IPhoneAdapter($this->phone); $this->phoneAdapter->useMicroUsb(); $this->phoneAdapter->recharge(); echo "---iPhone Ready for use--- "; } } $microUsbRecharger = new MicroUsbRecharger(); class IPhoneRecharger { private $phone; public function __construct() { echo "---Recharging iPhone with iPhone Recharger--- "; $this->phone = new IPhone(); $this->phone->useLightning(); $this->phone->recharge(); echo "---iPhone Ready for use--- "; } } $iPhoneRecharger = new IPhoneRecharger(); class AndroidRecharger { private $phone; public function __construct() { echo "---Recharging Android Phone with Generic Recharger--- "; $this->phone = new Android(); $this->phone->useMicroUsb(); $this->phone->recharge(); echo "---Phone Ready for use--- "; } } $androidRecharger = new AndroidRecharger(); // Result: #quanton81 //---Recharging iPhone with Generic Recharger--- //MicroUsb connected -> Lightning connected -$ //Recharge Started //Recharge 20% //Recharge 50% //Recharge 70% //Recharge Finished //---iPhone Ready for use--- // //---Recharging iPhone with iPhone Recharger--- //Lightning connected -$ //Recharge Started //Recharge 20% //Recharge 50% //Recharge 70% //Recharge Finished //---iPhone Ready for use--- // //---Recharging Android Phone with Generic Recharger--- //MicroUsb connected -> //Recharge Started //Recharge 20% //Recharge 50% //Recharge 70% //Recharge Finished //---Phone Ready for use---

سكالا

implicit def adaptee2Adapter(adaptee: Adaptee): Adapter = { new Adapter { override def clientMethod: Unit = { // call Adaptee's method(s) to implement Client's clientMethod */ } } }

بايثون

""" Adapter pattern example. """ from abc import ABCMeta, abstractmethod NOT_IMPLEMENTED = "You should implement this." RECHARGE = ["Recharge started.", "Recharge finished."] POWER_ADAPTERS = {"Android": "MicroUSB", "iPhone": "Lightning"} CONNECTED = "{} connected." CONNECT_FIRST = "Connect {} first." class RechargeTemplate: __metaclass__ = ABCMeta @abstractmethod def recharge(self): raise NotImplementedError(NOT_IMPLEMENTED) class FormatIPhone(RechargeTemplate): @abstractmethod def use_lightning(self): raise NotImplementedError(NOT_IMPLEMENTED) class FormatAndroid(RechargeTemplate): @abstractmethod def use_micro_usb(self): raise NotImplementedError(NOT_IMPLEMENTED) class IPhone(FormatIPhone): __name__ = "iPhone" def __init__(self): self.connector = False def use_lightning(self): self.connector = True print(CONNECTED.format(POWER_ADAPTERS[self.__name__])) def recharge(self): if self.connector: for state in RECHARGE: print(state) else: print(CONNECT_FIRST.format(POWER_ADAPTERS[self.__name__])) class Android(FormatAndroid): __name__ = "Android" def __init__(self): self.connector = False def use_micro_usb(self): self.connector = True print(CONNECTED.format(POWER_ADAPTERS[self.__name__])) def recharge(self): if self.connector: for state in RECHARGE: print(state) else: print(CONNECT_FIRST.format(POWER_ADAPTERS[self.__name__])) class IPhoneAdapter(FormatAndroid): def __init__(self, mobile): self.mobile = mobile def recharge(self): self.mobile.recharge() def use_micro_usb(self): print(CONNECTED.format(POWER_ADAPTERS["Android"])) self.mobile.use_lightning() class AndroidRecharger(object): def __init__(self): self.phone = Android() self.phone.use_micro_usb() self.phone.recharge() class IPhoneMicroUSBRecharger(object): def __init__(self): self.phone = IPhone() self.phone_adapter = IPhoneAdapter(self.phone) self.phone_adapter.use_micro_usb() self.phone_adapter.recharge() class IPhoneRecharger(object): def __init__(self): self.phone = IPhone() self.phone.use_lightning() self.phone.recharge() print("Recharging Android with MicroUSB recharger.") AndroidRecharger() print() print("Recharging iPhone with MicroUSB using adapter pattern.") IPhoneMicroUSBRecharger() print() print("Recharging iPhone with iPhone recharger.") IPhoneRecharger()

Source: wikipedia.org