نمط واجهة المبنى

نمط واجهة المبنى (بالإنجليزية: facade pattern)‏ (يلفظ (فساد) façade أيضاً) هو نمط تصميم برامج شائع الاستخدام في البرمجة كائنية التوجه. تشبه الواجهة في العمارة، الواجهة هي كائن يعمل كواجهة أمامية تخفي كودًا أساسيًا أو بنيويًا أكثر تعقيدًا. يمكن للواجهة:

  • تحسين إمكانية قراءة مكتبة البرامج وإمكانية استخدامها من خلال إخفاء التفاعل مع المكونات الأكثر تعقيدًا وراء واجهة برمجة تطبيقات واحدة (وغالبًا ما تكون مبسطة)
  • توفير واجهة خاصة بالسياق لمزيد من الوظائف العامة (كاملة مع التحقق من صحة المدخلات الخاصة بالسياق)
  • بمثابة نقطة انطلاق لمُعدِّل أوسع للأنظمة المتآلفة أو المترابطة بإحكام لصالح كود أكثر ترابطاً.

غالبًا ما يستخدم المطورون نمط تصميم الواجهة عندما يكون النظام معقدًا للغاية أو يصعب فهمه لأن النظام يحتوي على العديد من الأصناف المترابطة أو لأن الكود المصدري غير متوفر. يخفي هذا النمط تعقيدات النظام الأكبر ويوفر واجهة أبسط للعميل. وعادةً ما تتضمن صنف مغلّف واحد يحتوي على مجموعة من الأعضاء التي يطلبها العميل. يدخل هؤلاء الأعضاء إلى النظام نيابة عن عميل الواجهة ويخفي تفاصيل التنفيذ.

نظرة عامة

نمط تصميم الواجهة [1] هو واحد من ثلاثة وعشرون نمطًا من أنماط تصميم GoF المعروفة التي تصف كيفية حل مشاكل التصميم المتكررة لتصميم برنامج مرن وقابل لإعادة الاستخدام، أي الكائنات التي يسهل تنفيذها، وتغييرها، اختبار وإعادة استخدامها.

ما هي المشاكل التي يمكن أن يحلها نمط تصميم الواجهة؟[2]

  • لتسهيل استخدام نظام فرعي معقد، يجب توفير واجهة بسيطة لمجموعة من الواجهات في النظام الفرعي.
  • يجب تقليل التبعيات على نظام فرعي.

يشير العملاء الذين يصلون إلى نظام فرعي معقد مباشرة (يعتمد على) العديد من الكائنات المختلفة التي لها واجهات مختلفة (اقتران ضيق)، مما يجعل العملاء صعب التنفيذ والتغيير والاختبار وإعادة الاستخدام.

ما الحل الذي يصفه نمط تصميم الواجهة؟

تعريف كائن واجهة Facade من أجل ذلك.

  • ينفذ واجهة بسيطة من حيث (بتفويض) الواجهات في النظام الفرعي
  • قد تؤدي وظائف إضافية قبل/ بعد إعادة توجيه الطلب.

يتيح هذا العمل من خلال كائن واجهة Facade لتقليل التبعيات على نظام فرعي. انظر أيضًا صنف UML ومخطط التسلسل أدناه.

الاستخدام

يتم استخدام الواجهة عند الرغبة في استخدام واجهة أسهل أو أبسط لكائن أساسي.[3] بدلاً من ذلك، يمكن استخدام محول عندما يجب أن يلتزم الغلاف بواجهة معينة ويجب أن يدعم السلوك متعدد الأشكال. يجعل الديكور من الممكن إضافة أو تغيير سلوك واجهة في وقت التشغيل.

نمط نوايا
نمط المحوّل يحول واجهة إلى أخرى بحيث تتطابق مع ما يتوقعه العميل
عامل الديكور يضيف المسؤولية إلى الواجهة ديناميكيًا من خلال التفاف الكود الأصلي
واجهة المبنى يوفر واجهة مبسطة

عادة ما يتم استخدام نمط الواجهة عندما

  • يكون المطلوب واجهة بسيطة للوصول إلى نظام معقد،
  • نظام معقد للغاية أو يصعب فهمه،
  • هناك حاجة إلى نقطة دخول لكل مستوى من مستويات البرامج، أو
  • تجريدات وتنفيذات نظام فرعي مرتبطة بإحكام.

بناء

مخطط الصنفUML ومخطط التسلسل

نموذج لصنف UML ومخطط تسلسلي لنمط تصميم الواجهة.[4]

في الرسم التخطيطي لصنف UML أعلاه، لا يصل صنف Client إلى أصناف النظام الفرعي مباشرة. بدلاً من ذلك، يعمل العميل Client من خلال صنف الواجهة Facade التي تطبق واجهة بسيطة من حيث (عن طريق التفويض إلى) أصناف النظام الفرعي ( Class1 و Class2 و Class3 ). يعتمد Client فقط على واجهة Facade البسيطة وهو مستقل عن النظام الفرعي المعقد. يعرض الرسم التخطيطي للتسلسل تفاعلات وقت التشغيل: يعمل كائن عميل Client خلال كائن واجهة Facade الذي يفوض الطلب إلى مثيلات الأصناف التالية Class1 و Class2 و Class3 التي تقوم بتنفيذ الطلب.

مخطط الصنف UML

واجهة مبنى
تلخص صنف الواجهة الحزم 1 و 2 و 3 من بقية التطبيق.
عملاء
تستخدم الكائنات نمط الواجهة للوصول إلى الموارد من الحزم.

مثال

هذا مثال تجريدي لكيفية تفاعل العميل ("you") مع واجهة ("computer") لنظام معقد (أجزاء الكمبيوتر الداخلية، مثل وحدة المعالجة المركزية والأجهزة).

++C

#include <memory>
 
class CPU {
 public:
 void Freeze();
 void Jump(long position);
 void Execute();
};

class HardDrive {
 public:
 char* Read(long lba, int size);
};

class Memory {
 public:
 void Load(long position, char* data);
};

// Facade:
class ComputerFacade {
 public:
 void Start() {
  cpu_->Freeze();
  memory_->Load(kBootAddress, hard_drive_->Read(kBootSector, kSectorSize));
  cpu_->Jump(kBootAddress);
  cpu_->Execute();
 }

 private:
 std::unique_ptr<CPU> cpu_ = std::make_unique<CPU>();
 std::unique_ptr<Memory> memory_ = std::make_unique<Memory>();
 std::unique_ptr<HardDrive> hard_drive_ = std::make_unique<HardDrive>();
};

int main() {
 ComputerFacade computer;
 computer.Start();
}

#C

التنفيذ

namespace DesignPattern.Facade
{
  class SubsystemA
  {
    public string OperationA1()
    {
      return "Subsystem A, Method A1\n";
    }
    public string OperationA2()
    {
      return "Subsystem A, Method A2\n";
    }
  }
 
  class SubsystemB
  {
    public string OperationB1()
    {
      return "Subsystem B, Method B1\n";
    }

    public string OperationB2()
    {
      return "Subsystem B, Method B2\n";
    }
  }

  class SubsystemC
  {
    public string OperationC1()
    {
      return "Subsystem C, Method C1\n";
    }

    public string OperationC2()
    {
      return "Subsystem C, Method C2\n";
    }
  }

  public class Facade
  {
    private readonly SubsystemA a = new SubsystemA();
    private readonly SubsystemB b = new SubsystemB();
    private readonly SubsystemC c = new SubsystemC();
    public void Operation1()
    {
      Console.WriteLine("Operation 1\n" +
        a.OperationA1() +
        b.OperationB1() +
        c.OperationC1());
    }
    public void Operation2()
    {
      Console.WriteLine("Operation 2\n" +
        a.OperationA2() +
        b.OperationB2() +
        c.OperationC2());
    }
  }
}

عينة من الكود

namespace DesignPattern.Facade.Sample
{ 
  // The 'Subsystem ClassA' class
  class CarModel
  {
    public void SetModel()
    {
      Console.WriteLine(" CarModel - SetModel");
    }
  }

  /// <summary>
  /// The 'Subsystem ClassB' class
  /// </summary>
  class CarEngine
  {
    public void SetEngine()
    {
      Console.WriteLine(" CarEngine - SetEngine");
    }
  }

  // The 'Subsystem ClassC' class
  class CarBody
  {
    public void SetBody()
    {
      Console.WriteLine(" CarBody - SetBody");
    }
  }

  // The 'Subsystem ClassD' class
  class CarAccessories
  {
    public void SetAccessories()
    {
      Console.WriteLine(" CarAccessories - SetAccessories");
    }
  }

  // The 'Facade' class
  public class CarFacade
  {
    private readonly CarAccessories accessories;
    private readonly CarBody body;
    private readonly CarEngine engine;
    private readonly CarModel model;

    public CarFacade()
    {
      accessories = new CarAccessories();
      body = new CarBody();
      engine = new CarEngine();
      model = new CarModel();
    }

    public void CreateCompleteCar()
    {
      Console.WriteLine("******** Creating a Car **********");
      model.SetModel();
      engine.SetEngine();
      body.SetBody();
      accessories.SetAccessories();

      Console.WriteLine("******** Car creation is completed. **********");
    }
  }

  // Facade pattern demo
  class Program
  {
    static void Main(string[] args)
    {
      var facade = new CarFacade();

      facade.CreateCompleteCar();

      Console.ReadKey();
    }
  }
}

جافا

/* Comp

class CPU {
  public void freeze() { ... }
  public void jump(long position) { ... }
  public void execute() { ... }
}

class HardDrive {
  public byte[] read(long lba, int size) { ... }
}

class Memory {
  public void load(long position, byte[] data) { ... }
}

/* Facade */

class ComputerFacade {
  private final CPU processor;
  private final Memory ram;
  private final HardDrive hd;

  public ComputerFacade() {
    this.processor = new CPU();
    this.ram = new Memory();
    this.hd = new HardDrive();
  }

  public void start() {
    processor.freeze();
    ram.load(BOOT_ADDRESS, hd.read(BOOT_SECTOR, SECTOR_SIZE));
    processor.jump(BOOT_ADDRESS);
    processor.execute();
  }
}

/* Client */

class You {
  public static void main(String[] args) {
    ComputerFacade computer = new ComputerFacade();
    computer.start();
  }
}

روبي

# Complex Parts
class CPU
 def freeze; end
 def jump(position); end
 def execute; end
end
 
class Memory
 def load(position, data); end
end

class HardDrive
 def read(lba, size); end
end

# Facade
class ComputerFacade

 def initialize
  @processor = CPU.new
  @ram = Memory.new
  @hd = HardDrive.new
 end

 def start
  @processor.freeze
  @ram.load(BOOT_ADDRESS, @hd.read(BOOT_SECTOR, SECTOR_SIZE))
  @processor.jump(BOOT_ADDRESS)
  @processor.execute
 end
end

# Client
computer_facade = ComputerFacade.new
computer_facade.start

PHP

/** 
 * The complicated, underlying logic.
 */
class CPU
{
  public function freeze() {/* ... */}
  public function jump($position) {/* ... */}
  public function execute() {/* ... */}
}

class Memory
{
  public function load($position, $data) {/* ... */}
}

class HardDrive
{
  public function read($lba, $size) {/* ... */}
}

/**
 * The facade that users would be interacting with.
 */
class ComputerFacade
{
  protected CPU $cpu;
  protected Memory $memory;
  protected HardDrive $hd;

  public function __construct()
  {
    $this->cpu = new CPU;
    $this->memory = new Memory;
    $this->hd = new HardDrive;
  }

  public function start() : void
  {
    $this->cpu->freeze();
    $this->memory->load(BOOT_ADDRESS, $this->hd->read(BOOT_SECTOR, SECTOR_SIZE));
    $this->cpu->jump(BOOT_ADDRESS);
    $this->cpu->execute();
  }
}

/**
 * How a user could start the computer.
 */
$computer = new ComputerFacade;
$computer->start();

بايثون

"""
Facade pattern example.
"""
 
# Complex computer parts
class CPU(object):
  """
  Simple CPU representation.
  """
  def freeze(self) -> None:
    print("Freezing processor.")

  def jump(self, position) -> None:
    print("Jumping to:", position)

  def execute(self) -> None:
    print("Executing.")

class Memory(object):
  """
  Simple memory representation.
  """
  def load(self, position, data):
    print("Loading from {0} data: '{1}'.".format(position, data))

class SolidStateDrive(object):
  """
  Simple solid state drive representation.
  """
  def read(self, lba, size):
    return "Some data from sector {0} with size {1}".format(lba, size)

class ComputerFacade(object):
  """
  Represents a facade for various computer parts.
  """
  def __init__(self) -> None:
    self.cpu = CPU()
    self.memory = Memory()
    self.ssd = SolidStateDrive()

  def start(self) -> None:
    self.cpu.freeze()
    self.memory.load("0x00", self.ssd.read("100", "1024"))
    self.cpu.jump("0x00")
    self.cpu.execute()

computer_facade = ComputerFacade()
computer_facade.start()

Output:

Freezing processor.
Loading from 0x00 data: 'Some data from sector 100 with size 1024'.
Jumping to: 0x00
Executing.

بوويرشيل PowerShell

"""
Facade pattern example.
"""
  
class CPU {
  
  freeze() {
    "$this freezing" | Out-Host
  }

  jump($position) {
    "$this jump to $position" | Out-Host
  }

  execute() {
    "$this execute" | Out-Host
  }
}

class Memory {
  load($position, $data) {
    "$this load $position $data" | Out-Host    
  }
}

class HardDrive {
  [object] read($lba, $size) {    
    "$this read $lba $size" | Out-Host    
    
    return "(some data)"
  }
}

# Façade
class Computer {
  hidden [CPU]$cpu 
  hidden [Memory]$memory
  hidden [HardDrive]$hardDrive

  Computer() {
    $this.cpu = New-Object CPU
    $this.memory = New-Object Memory
    $this.hardDrive = New-Object HardDrive
  }

  StartComputer() {
    $this.cpu.freeze()
    $this.memory.load(0, $this.hardDrive.read(0, 1024))
    $this.cpu.jump(10)
    $this.cpu.execute()
  }
}

$façade = [Computer]::new()

$façade.StartComputer()

Output:

CPU freezing
HardDrive read 0 1024
Memory load 0 (some data)
CPU jump to 10
CPU execute

انظر أيضا

المراجع

  1. ^ Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley. ص. 185ff. ISBN:0-201-63361-2. مؤرشف من الأصل في 2020-06-12.{{استشهاد بكتاب}}: صيانة الاستشهاد: أسماء متعددة: قائمة المؤلفين (link)
  2. ^ "The Facade design pattern - Problem, Solution, and Applicability". w3sDesign.com. مؤرشف من الأصل في 2020-06-12. اطلع عليه بتاريخ 2017-08-12.
  3. ^ Freeman، Eric؛ Freeman، Elisabeth؛ Sierra، Kathy؛ Bates، Bert (2004). Hendrickson، Mike؛ Loukides، Mike (المحررون). Head First Design Patterns. O'Reilly. ج. 1. ص. 243, 252, 258, 260. ISBN:978-0-596-00712-6. مؤرشف من الأصل (paperback) في 2020-05-29. اطلع عليه بتاريخ 2012-07-02.
  4. ^ "The Facade design pattern - Structure and Collaboration". w3sDesign.com. مؤرشف من الأصل في 2020-06-12. اطلع عليه بتاريخ 2017-08-12.

روابط خارجية

Read other articles:

Українські шерифи Міжнародний постерЖанр ДокументальнийРежисер Роман БондарчукПродюсер Дарина АверченкоУлдіс СекулісСценарист Дарина АверченкоОператор Роман БондарчукКомпозитор Антон БайбаковМонтаж Роман БондарчукКатерина ГорностайБорис ПетерКінокомпанія VFS Fil...

 

Cen 岑Chinese character for surname CenPronunciation[tsʰə̌n] (Mandarin)[sɐ̏m] (Cantonese)[gîm] (Hokkien)Language(s)ChineseOriginLanguage(s)Old ChineseWord/nameChinaMeaningSteep hill, mountainOther namesVariant form(s)Ts'en, Tsen, Sam, Shum, Sham, Sum, Sang, Gim, Khim, Chim Cen is the Mandarin pinyin romanization of the Chinese surname written 岑 in Chinese character. It is romanized Ts'en in Wade–Giles, and variously as Sam, Sum, Sham, Shum in Cantonese, Gim,...

 

Jefri Van NovisLahir1982Bukittinggi, Sumatera BaratKebangsaanIndonesiaAlmamaterUniversitas Andalas, PadangPekerjaanPengusahaDikenal atasPendiri Bonita Tour & Travel Jefri Van Novis, SE. (lahir di Bukittinggi, Sumatera Barat, 1982) adalah seorang pengusaha muda Indonesia. Ia merupakan pendiri Bonita Tour & Travel, yang mengelola usaha tour and travel di bawah bendera PT. Bonita Pratama. Saat ini Bonita Tour & Travel telah mempunyai lebih dari 148 mitra usaha di seluruh Indonesia.&...

Туркмены в Казахстане (туркм. Gazagystanyň türkmenleri, каз. Қазақстан түркімендері) — туркменское национальное меньшинство, проживающее в Казахстане. По данным переписи 2021 года насчитывается около 2834 представителей туркменской диаспоры в Казахстане[1]. Подавляющее число т...

 

Canadian gridiron football player (born 1976) Brent JohnsonNo. 97Brent Johnson in 2012.Born: (1976-12-07) December 7, 1976 (age 47)Kingston, Ontario, CanadaCareer informationCFL statusNationalPosition(s)DEHeight6 ft 3 in (191 cm)Weight265 lb (120 kg)CollegeOhio StateCFL Draft2000, Round: 3, Pick: 20Drafted byBC LionsCareer historyAs player2001–2011BC Lions Career highlights and awards 2× Grey Cup champion (2006, 2011) CFL Most Outstand...

 

LematangJumlah populasi311,000[1]Daerah dengan populasi signifikanBahasaLematangIndonesiaAgamaIslam Kristen (Protestan dan Katolik)[1] Aliran sungai Lematang di Lahat Suku Lematang atau Melayu Lematang adalah satu suku Melayu yang sebagian besar populasinya tinggal di sepanjang pinggir Sungai Lematang dan daerah sekitarnya, terbentang dari Kabupaten Lahat sampai ke Kabupaten Muara Enim.[2] Di Kabupaten Lahat, mereka tinggal di wilayah Pulau Pinang, Lahat, dan Merapi. D...

The Chesterfield Supper ClubPerry Como and Jo Stafford pictured on the cover of Metronome (January 1946)GenreMusical varietyRunning time15 minute (1944–1948)30 minutes (1949–1950)[1]Country of originUSALanguage(s)EnglishHome stationNBCTV adaptationsThe Chesterfield Supper ClubStarringPerry ComoPeggy Lee (1948)Jo StaffordAnnouncerMartin Block (1944–1950)(1947 from Hollywood)[1][2]Mel Allen (1947 from New York)[2]Ben Grauer (1948)[3][4]Orig...

 

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada September 2015. Arkeologi publik adalah laku arkeologi yang kiblatnya adalah arkeologi untuk masyarakat (Noerwidi. 2006). Latar Belakang Istilah Arkeologi Publik muncul pada di Amerika pada tahun 1972 yang dipopulerkan oleh McGimsey melalui tulisannya. Pada masa itu...

 

Heide Simonis, ministre-présidente du Schleswig-Holstein de 1993 à 2005 Le terme de ministre-président[Note 1] est un titre porté par certains chefs de gouvernement. Utilisation nationale Ministre-président (minister-president) est le titre officiel du Premier ministre des Pays-Bas depuis 1983. Un autre titre est ministre des Affaires générales. Dans les textes non officiels, on fait souvent l'usage du gallicisme premier. Le ministre-président est le primus inter pares du conseil des ...

2016年美國總統選舉 ← 2012 2016年11月8日 2020 → 538個選舉人團席位獲勝需270票民意調查投票率55.7%[1][2] ▲ 0.8 %   获提名人 唐納·川普 希拉莉·克林頓 政党 共和黨 民主党 家鄉州 紐約州 紐約州 竞选搭档 迈克·彭斯 蒂姆·凱恩 选举人票 304[3][4][註 1] 227[5] 胜出州/省 30 + 緬-2 20 + DC 民選得票 62,984,828[6] 65,853,514[6]...

 

2020年夏季奥林匹克运动会波兰代表團波兰国旗IOC編碼POLNOC波蘭奧林匹克委員會網站olimpijski.pl(英文)(波兰文)2020年夏季奥林匹克运动会(東京)2021年7月23日至8月8日(受2019冠状病毒病疫情影响推迟,但仍保留原定名称)運動員206參賽項目24个大项旗手开幕式:帕维尔·科热尼奥夫斯基(游泳)和马娅·沃什乔夫斯卡(自行车)[1]闭幕式:卡罗利娜·纳亚(皮划艇)&#...

 

Danish singer, songwriter and musician (born 1946) Keld Heick Keld Heick (born 24 February 1946 in Frederiksberg) is a Danish singer, songwriter and musician. He is best known for his contribution to the Dansk Melodi Grand Prix, where he has submitted over 30 songs. In 1963 Heick formed the band Keld & the Donkeys. The band's big breakthrough came in 1966 with the song Ved landsbyens gadekær (eng. At the village pond).[1] In 1976 he decided to merge his professional and personal ...

National badminton team representing the Maldives MaldivesAssociationBadminton Association of Maldives (BaMDV)ConfederationBA (Asia)PresidentMoosa NashidBWF rankingCurrent ranking58 8 (2 January 2024)Highest ranking35 (4 October 2018)Asian Men's Team ChampionshipsAppearances2 (first in 2016)Best resultGroup stageAsian Men's Team ChampionshipsAppearances2 (first in 2016)Best resultGroup stage The Maldives national badminton team (Dhivehi: ދިވެހިރާއްޖެނަތިޮނަލ ބަދމިނތ...

 

عنتحروب الخليج العربي حرب الخليج الأولى (1980–88) (حرب الناقلات) غزو الكويت (1990) حرب الخليج الثانية (1990–91) انتفاضة الأكراد العراقيين والشيعة (1991) نزاع مناطق حظر الطيران العراقية (1991–2003) ضربات الصواريخ على العراق (1993) ضربات الصواريخ على العراق (1996) عملية ثعلب الصحراء انتفاضة الش�...

 

2009 video game 2009 video gameEmpire: Total WarEmpire: Total War's British artwork. Regional variations show respective nations' colours and uniforms.Developer(s)Creative AssemblyFeral Interactive (macOS, Linux)Publisher(s)SegaFeral Interactive (macOS, Linux)Director(s)Michael M. SimpsonProducer(s)Ross MantonDesigner(s)James RussellArtist(s)Kevin McDowellComposer(s)Walter MairRichard BeddowSeriesTotal WarPlatform(s)Microsoft WindowsmacOSLinuxRelease 3 March 2009 Microsoft WindowsNA: 3 Ma...

Art gallery in Sant Feliu de Guíxols, Catalonia, Spain Carmen Thyssen Space The Carmen Thyssen Space is an art gallery in the municipality of Sant Feliu de Guíxols, in the Baix Empordà region.[1] containing works from the Carmen Thyssen Collection. Her commitment to promoting culture lends special relevance to the family activities that accompany the artwork on display. The center is housed in the Palau de l'Abat (The Abbot's Palace), a former Benedictine monastery.[2] Hist...

 

Halaman ini berisi artikel tentang aksi militer saja. Untuk perkembangan politik dan sosial, termasuk asal usul dan akibat perang, lihat Revolusi Amerika Serikat. Perang Revolusi Amerika SerikatSearah jarum jam dari kiri atas: Pertempuran Bunker Hill, Kematian Montgomery di Quebec, Pertempuran Cowpens, Moonlight BattleTanggal19 April 1775 – 3 September 1783 (8 tahun, 137 hari)LokasiAmerika Utara Timur, Gibraltar, Kepulauan Balearik, Amerika Tengah;Jajahan kolonial Pranci...

 

Biden speaking about his decision of withdrawing his candidacy in a televised address, July 24, 2024 On July 21, 2024, Joe Biden, the incumbent Democratic president of the United States, announced his withdrawal from the 2024 United States presidential election in a statement on social media.[1] He endorsed Vice President Kamala Harris as his replacement as the party's candidate in the election.[2] Biden had announced he would run for reelection as president in the 2024 elect...

River in Argeș County, RomaniaRâul DoamneiLocationCountryRomaniaCountiesArgeș CountyPhysical characteristicsSourceFăgăraș Mountains MouthArgeș • locationPitești • coordinates44°51′45″N 24°53′11″E / 44.8625°N 24.8863°E / 44.8625; 24.8863Length107 km (66 mi)Basin size1,836 km2 (709 sq mi)Basin featuresProgressionArgeș→ Danube→ Black SeaTributaries  • leftRâu...

 

New Zealand zoologist (1860–1950) Sir William BenhamKBE FRSBenham in 1907BornWilliam Blaxland Benham(1860-03-29)29 March 1860Isleworth, Middlesex, EnglandDied21 August 1950(1950-08-21) (aged 90)Dunedin, New ZealandSpouse Beatrice Eadie ​ ​(m. 1889; died 1909)​Scientific careerFieldsZoologyInstitutionsBedford College, LondonUniversity of OtagoOtago Museum Sir William Blaxland Benham KBE FRS (29 March 1860 – 21 August 1950) was a ...