• [php]php设计模式 FlyWeight (享元模式)


    1 <?php
    2 /**
    3 * 享元模式
    4 *
    5 * 运用享元技术有效的支持大量细粒度的对象
    6 */
    7 class CD
    8 {
    9 private$_title=null;
    10 private$_artist=null;
    11
    12 publicfunction setTitle($title)
    13 {
    14 $this->_title =$title;
    15 }
    16
    17 publicfunction getTitle()
    18 {
    19 return$this->_title;
    20 }
    21
    22 publicfunction setArtist($artist)
    23 {
    24 $this->_artist =$artist;
    25 }
    26
    27 publicfunction getArtist($artist)
    28 {
    29 return$this->_artist;
    30 }
    31 }
    32
    33 class Artist
    34 {
    35 private$_name;
    36
    37 publicfunction __construct($name)
    38 {
    39 echo"construct ".$name."<br/>";
    40 $this->_name =$name;
    41 }
    42
    43 publicfunction getName()
    44 {
    45 return$this->_name;
    46 }
    47 }
    48
    49 class ArtistFactory
    50 {
    51 private$_artists=array();
    52
    53 publicfunction getArtist($name)
    54 {
    55 if(isset($this->_artists[$name]))
    56 {
    57 return$this->_artists[$name];
    58 } else {
    59 $objArtist=new Artist($name);
    60 $this->_artists[$name] =$objArtist;
    61 return$objArtist;
    62 }
    63 }
    64 }
    65
    66 $objArtistFactory=new ArtistFactory();
    67
    68 $objCD1=new CD();
    69 $objCD1->setTitle("title1");
    70 $objCD1->setArtist($objArtistFactory->getArtist('artist1'));
    71
    72 $objCD2=new CD();
    73 $objCD2->setTitle("title2");
    74 $objCD2->setArtist($objArtistFactory->getArtist('artist2'));
    75
    76 $objCD3=new CD();
    77 $objCD3->setTitle("title3");
    78 $objCD3->setArtist($objArtistFactory->getArtist('artist1'));
  • 相关阅读:
    Object—C 块在函数中作为参数时的分析
    C语言函数调用的底层机制
    高考是最后一次拼智商的事了。(beacuse 大多数人的努力程度之低根本轮不到拼天赋!)
    KMP
    由clone引出的 protected 问题
    Abstract Factory
    Oracle,第四周
    由clone引出的abstract class 和 interface 的问题
    Factory Method
    Simple Factory
  • 原文地址:https://www.cnblogs.com/bluefrog/p/2088502.html
Copyright © 2020-2023  润新知