一、java版
抽象产品 Product.java :
/** * 抽象产品 * @author hejinlai * */ public interface Product { public void fun(); }
具体产品 ConcreteProduct.java :
/**
* 具体产品
* @author hejinlai
*
*/
public class ConcreteProduct implements Product {
@Override
public void fun() {
System.out.println("ConcreteProduct -> fun()");
}
}
简单工厂 SimpleFactory.java :
/**
* 简单工厂
* @author hejinlai
*
*/
public class SimpleFactory {
public static Product getProduct(){
return new ConcreteProduct();
}
}
测试 Test.java :
/**
* 测试类
* @author hejinlai
*
*/
public class Test {
public static void main(String[] args) {
Product product = SimpleFactory.getProduct();
product.fun();
}
}
测试结果:
ConcreteProduct -> fun()
二、c++版
抽象产品 Product.h :
//
// Product.h
// Pattern
//
// Created by hejinlai on 13-8-6.
// Copyright (c) 2013年 yunzhisheng. All rights reserved.
//
#ifndef __Pattern__Product__
#define __Pattern__Product__
#include <iostream>
class Product {
public:
Product();
virtual ~Product();
virtual void fun() = 0;
};
#endif /* defined(__Pattern__Product__) */
抽象产品 Product.cpp :
//
// Product.cpp
// Pattern
//
// Created by hejinlai on 13-8-6.
// Copyright (c) 2013年 yunzhisheng. All rights reserved.
//
#include "Product.h"
Product::Product()
{
}
Product::~Product()
{
}
具体产品 ConcreteProduct.h :
//
// ConcreteProduct.h
// Pattern
//
// Created by hejinlai on 13-8-6.
// Copyright (c) 2013年 yunzhisheng. All rights reserved.
//
#ifndef __Pattern__ConcreteProduct__
#define __Pattern__ConcreteProduct__
#include <iostream>
#include "Product.h"
using namespace std;
class ConcreteProduct : public Product{
public:
virtual void fun();
ConcreteProduct();
~ConcreteProduct();
};
#endif /* defined(__Pattern__ConcreteProduct__) */
具体产品 ConcreteProduct.cpp:
//
// SimpleFactory.cpp
// Pattern
//
// Created by hejinlai on 13-8-6.
// Copyright (c) 2013年 yunzhisheng. All rights reserved.
//
#include "SimpleFactory.h"
#include "ConcreteProduct.h"
Product * SimpleFactory::getProduct()
{
return new ConcreteProduct();
}
简单工厂 SimpleFactory.h :
//
// SimpleFactory.h
// Pattern
//
// Created by hejinlai on 13-8-6.
// Copyright (c) 2013年 yunzhisheng. All rights reserved.
//
#ifndef __Pattern__SimpleFactory__
#define __Pattern__SimpleFactory__
#include <iostream>
#include "Product.h"
class SimpleFactory {
public:
static Product * getProduct();
};
#endif /* defined(__Pattern__SimpleFactory__) */
简单工厂 SimpleFactory.cpp :
//
// SimpleFactory.cpp
// Pattern
//
// Created by hejinlai on 13-8-6.
// Copyright (c) 2013年 yunzhisheng. All rights reserved.
//
#include "SimpleFactory.h"
#include "ConcreteProduct.h"
Product * SimpleFactory::getProduct()
{
return new ConcreteProduct();
}
测试 main.cpp :
//
// main.cpp
// Pattern
//
// Created by hejinlai on 13-8-6.
// Copyright (c) 2013年 yunzhisheng. All rights reserved.
//
#include <iostream>
#include "SimpleFactory.h"
int main(int argc, const char * argv[])
{
Product * product = SimpleFactory::getProduct();
product->fun();
delete product;
return 0;
}
测试结果:
ConcreteProduct -> fun()
三、Objective-c 版
抽象产品 Product.h :
//
// Product.h
// ObcPattern
//
// Created by hejinlai on 13-8-6.
// Copyright (c) 2013年 yunzhisheng. All rights reserved.
//
#import <Foundation/Foundation.h>
@protocol Product <NSObject>
- (void) fun;
@end
具体产品 ConcreteProduct.h :
//
// ConcreteProduct.h
// ObcPattern
//
// Created by hejinlai on 13-8-6.
// Copyright (c) 2013年 yunzhisheng. All rights reserved.
//
#import <Cocoa/Cocoa.h>
#import "Product.h"
@interface ConcreteProduct : NSObject <Product>
@end
具体产品 ConcreteProduct.m :
//
// ConcreteProduct.m
// ObcPattern
//
// Created by hejinlai on 13-8-6.
// Copyright (c) 2013年 yunzhisheng. All rights reserved.
//
#import "ConcreteProduct.h"
@implementation ConcreteProduct
- (void)fun
{
NSLog(@"ConcreteProduct -> fun()");
}
@end
简单工厂 SimepleFactory.h :
//
// SimpleFactory.h
// ObcPattern
//
// Created by hejinlai on 13-8-6.
// Copyright (c) 2013年 yunzhisheng. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Product.h"
@interface SimpleFactory : NSObject
+(id<Product>) getProduct;
@end
简单工厂 SimepleFactory.m :
//
// SimpleFactory.m
// ObcPattern
//
// Created by hejinlai on 13-8-6.
// Copyright (c) 2013年 yunzhisheng. All rights reserved.
//
#import "SimpleFactory.h"
#import "ConcreteProduct.h"
@implementation SimpleFactory
+(id<Product>) getProduct
{
return [[[ConcreteProduct alloc] init] autorelease];
}
@end
测试 main.m :
//
// main.m
// ObcPattern
//
// Created by hejinlai on 13-8-6.
// Copyright (c) 2013年 yunzhisheng. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "SimpleFactory.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
id<Product> product = [SimpleFactory getProduct];
[product fun];
}
return 0;
}
测试结果:
2013-08-06 14:22:32.186 ObcPattern[9932:303] ConcreteProduct -> fun()
转载于:https://blog.51cto.com/ikinglai/1265222