Skip to content

Instantly share code, notes, and snippets.

@ErikZhou
ErikZhou / Singleton
Last active December 20, 2015 10:49
Creational patterns - Singleton
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
class Number
{
public:
// 2. Define a public static accessor func
static Number *instance();
@ErikZhou
ErikZhou / Adapter
Last active December 20, 2015 10:49
Structural Patterns - Adapter
//Structural Patterns - Adapter
#include <iostream>
using namespace std;
typedef int Coordinate;
typedef int Dimension;
// Desired interface
class Rectangle
{
@ErikZhou
ErikZhou / Bridge
Last active December 20, 2015 10:59
Structural Patterns - Bridge
//Structural Patterns - Bridge
#include <iostream>
#include <iomanip>
#include <string.h>
using namespace std;
class TimeImp {
public:
TimeImp(int hr, int min) {
@ErikZhou
ErikZhou / Bridge.cs
Last active December 20, 2015 11:00
Structural Patterns - Bridge C# sample
// Bridge pattern -- Structural example
using System;
// "Abstraction"
class Abstraction
{
// Fields
protected Implementor implementor;
// Properties
@ErikZhou
ErikZhou / Composite.cpp
Created August 7, 2013 02:27
Composite design pattern - multiple container classes
//Composite design pattern - multiple container classes
#include <iostream>
#include <vector>
using namespace std;
class Component
{
public:
virtual void traverse() = 0;
};
@ErikZhou
ErikZhou / Decorator.cpp
Created August 7, 2013 05:30
Structural Patterns - Decorator
#include <iostream>
using namespace std;
// 1. "lowest common denom"
class Widget
{
public:
virtual void draw() = 0;
};
@ErikZhou
ErikZhou / Decorator2.cpp
Created August 7, 2013 06:24
Decorator
#include <iostream>
#include <string>
using namespace std;
class Interface
{
public:
virtual ~Interface(){}
virtual void write(string &) = 0;
virtual void read(string &) = 0;
@ErikZhou
ErikZhou / Decorator.cs
Created August 7, 2013 06:35
Structural Patterns - Decorator C# demo
using System;
class MainApp
{
static void Main()
{
// Create ConcreteComponent and two Decorators
ConcreteComponent c = new ConcreteComponent();
ConcreteDecoratorA d1 = new ConcreteDecoratorA();
ConcreteDecoratorB d2 = new ConcreteDecoratorB();
@ErikZhou
ErikZhou / Facade.cpp
Created August 7, 2013 07:27
Structural Patterns - Facade
#include <iostream>
using namespace std;
class MisDepartment
{
public:
void submitNetworkRequest()
{
_state = 0;
}
@ErikZhou
ErikZhou / Flyweight1.cpp
Created August 7, 2013 11:19
Structural Patterns - Flyweight
// Flyweight.h
#include <string>
#include <map>
#include <vector>
#include <iostream>
using namespace std;
class AbstractFont // Flyweight抽象类
{
protected: