设计模式--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

    原文作者:亲密数
    原文地址: https://blog.csdn.net/xuhx/article/details/6763911
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞