วันอังคารที่ 16 พฤศจิกายน พ.ศ. 2553

non new and method chaining

แทนที่จะ new object ของ class จากด้านนอก เราสามารถเขียนอีกแบบซึ่งจะสะดวกกว่าในหลายๆ กรณี
โดยการประกาศตัวแปร object ภายใน static method ของ class นั้นแทน
และใช้วิธี method chaining เพื่อลดการเรียกชื่อผ่านตัวแปร object จากด้านนอกและ
เรียกๆ method ที่คืนค่าของ class ไปเรื่อยๆ เพื่อประมวลผล (method chaining)
และสิ้นสุดด้วยการเรียก result method เพื่อนำค่าที่ได้ไปใช้งาน ดังนี้ครับ

PHP

<?php

class Cal
{
protected $n;
public function __construct($n){
$this->n = $n;
}
public function add($n){
$this->n += $n;
return $this;
}
public function mul($n){
$this->n *= $n;
return $this;
}
public function result(){
return $this->n;
}
public static function create($n){
return new Cal($n);
}
}

echo Cal::create(3)->add(5)->mul(100)->result();

?>



C#

// Cal.cs
public class Cal
{
protected int n;
public static Cal Create(int n)
{
return new Cal(n);
}
public Cal(int n)
{
this.n = n;
}
public Cal Add(int n){
this.n += n;
return this;
}
public Cal Mul(int n)
{
this.n *= n;
return this;
}
public int Result()
{
return this.n;
}
}
//Example
//Response.Write(Cal.Create(10).Add(1).Mul(3).Result());

ไม่มีความคิดเห็น:

แสดงความคิดเห็น