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'));
  • 相关阅读:
    leetcode5 Longest Palindromic Substring
    leetcode17 Letter Combinations of a Phone Number
    leetcode13 Roman to Integer
    leetcode14 Longest Common Prefix
    leetcode20 Valid Parentheses
    leetcode392 Is Subsequence
    leetcode121 Best Time to Buy and Sell Stock
    leetcode198 House Robber
    leetcode746 Min Cost Climbing Stairs
    tomcat下使用druid配置jnid数据源
  • 原文地址:https://www.cnblogs.com/bluefrog/p/2088502.html
Copyright © 2011-2022 走看看