zoukankan      html  css  js  c++  java
  • [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'));
  • 相关阅读:
    C#与C++与互操作
    WPF GridView动态添加项并读取数据
    C#使用消息队列(MSMQ)
    使用代码浏览WPF控件模版
    PowerShell将运行结果保存为文件
    opencv + ffmpeg
    vmware
    HttpComponents Downloads
    pytorch 安装
    opencv 3.4.0 的编译
  • 原文地址:https://www.cnblogs.com/bluefrog/p/2088502.html
Copyright © 2011-2022 走看看