设计模式--Mixin模式

Adapter模式:把一个接口转换为另一个接口。

Decorator模式:给一个对象动态增加功能。比如Java的 new BufferedOutputStream(new FileOutputStream(new File("a-file-name"))),BufferedOutputStream就给FileOutputStream对象增加了缓冲写的功能。此即Decorator模式。


Mixin模式: 笼统地说就是综合多个类的功能产生一个类,但不用多继承。下面是一个C++的Mixin模式的实现。Java用Decorator可以实现Mixin,Java也可以通过动态代理(Dynamic Proxy)来实现Mixin,但看起来都不如C++直接。

// tst.cpp : Defines the entry point for the console application.
//
/*
result:
1314091501
1
1314091501
2


*/

#include "stdafx.h"
#include <iostream>
#include <string>
#include <time.h>
using namespace std; 

class Basic {
public:
	long val; 
};

template <class T>
class TimeStamp: public T
{
	private:
		long timestamp;
	public:
		TimeStamp() {
			timestamp=time(NULL);
		}
		long getTimeStamp() {
			return timestamp; 
		}
}; 

template <class T>
class SerialNumbered: public T
{
	private:
		long serialNumber;
		static long counter; 
	public:
		SerialNumbered() {
			serialNumber = ++ counter; 
		}
		long getSerialNumber() {
			return serialNumber; 
		}
};

template <class T>
long  SerialNumbered<T>::counter = 0;



int main(int argc, char* argv[])
{
	
	SerialNumbered< TimeStamp<Basic> > b1;
	int i;
	for(i=0;i<100000000;i++);
	SerialNumbered< TimeStamp<Basic> > b2;
	printf("%u\n",b1.getTimeStamp());
	printf("%u\n",b1.getSerialNumber());
	printf("%u\n",b2.getTimeStamp());
	printf("%u\n",b2.getSerialNumber());
	return 0;
}


Proxy模式:一个对象作为另一个对象的代理,或占位,可以控制对被代理的访问。RPC经常采用Proxy模式,用户通过本地对象,访问远程对象。

Reference

Thinking in Java

Design Patterns

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值