C++-从实例谈OOP、工厂模式与重构

/**************************************************
 * 为了更好的理解OOP思想,我们先看一个例子(例1):
 *假设要设计一个媒体播放器,应播放器支持音频文件MP3和WAV
*************************************************
*/

// 例1
namespace  OOP思想
{
    
public partial class Form1 : Form
    
{
        
public Form1()
        
{
            InitializeComponent();
        }

        
private void btnPlay_Click(object sender, EventArgs e)
        
{
            PlayMP3(); 
//播放MP3
            
//PlayWAV(); //播放WAV
        }

        
public void PlayMP3()
        
{
            MessageBox.Show(
"开始播放MP3...");
        }

        
public void PlayWAV()
        
{
            MessageBox.Show(
"开始播放WAV...");
        }

    }
    
}


// 例2
/**************************************************
 *        自然,你会发现这是相当糟糕的设计,因为它根本没有为未来
 * 需要的变更提供最起码的扩展.根据OOP的思想,我们应该把MP3
 * 和WAV看成一个独立的对象.请看例2
*************************************************
*/

namespace  OOP思想
{
    
public partial class Form1 : Form
    
{
        
public Form1()
        
{
            InitializeComponent();
        }


        
private void btnPlay_Click(object sender, EventArgs e)
        
{
            IMedia im 
= new WAV(); //见注1
            im.Play();
        }

    }


    
interface IMedia //多媒体接口
    {
        
void Play();
    }


    
public class MP3:IMedia //MP3类
    {
        
public void Play()
        
{
            MessageBox.Show(
"开始播放MP3...");
        }

    }


    
public class WAV: IMedia //WAV类
    {
        
public void Play()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值