依賴 GCC extension, 非標準C語言。
支援 簡單的 class, private, extends, interface, abstract class, polymorphism.
[ C ] design pattern
- rubyish
- 渐入佳境
- 帖子: 52
- 注册时间: 2018年04月23日 09:58
- 联系:
- 523066680
- Administrator
- 帖子: 573
- 注册时间: 2016年07月19日 12:14
- 联系:
Re: [ C ] design pattern
设计模式rubyish 写了:依賴 GCC extension, 非標準C語言。
(以前有段时间你只发英文,是和工作使用的系统有关吗?
- rubyish
- 渐入佳境
- 帖子: 52
- 注册时间: 2018年04月23日 09:58
- 联系:
Re: [ C ] design pattern
才發現好像沒有一一對應。這根據網路上的範例。而範例又基於 深入淺出設計模式 (Head First Design Patterns)
先發布個預覽。這還要重寫一遍。
策略模式 (Strategy pattern)
先發布個預覽。這還要重寫一遍。
策略模式 (Strategy pattern)
代码: 全选
/* gcc version 9.2.0 (GCC) */
#include <stdio.h>
#include <stdlib.h>
#include "..."
interface(Flyable) {
void (*fly)(void);
};
interface(Quackable) {
void (*quack)(void);
};
abstract class(Duck) {
void (*set_flyable)(Flyable*);
void (*set_quackable)(Quackable*);
void (*fly)(void);
void (*quack)(void);
private(Duck);
Flyable* flyable;
Quackable* quackable;
abstract void (*display)(void);
};
// SuperFly
Class(SuperFly) { implements(Flyable); };
void SuperFly_fly(void) { puts("I'm super flying!"); }
__new__(SuperFly) { meth(SuperFly, fly); }
// SuperQuack
Class(SuperQuack) { implements(Quackable); };
void SuperQuack_quack(void) { puts("I'm super quacking!"); }
__new__(SuperQuack) { meth(SuperQuack, quack); }
// impl Duck
void Duck_set_flyable(Flyable* fly) {
is(Duck);
this->flyable = fly;
}
void Duck_set_quackable(Quackable* quack) {
is(Duck);
this->quackable = quack;
}
void Duck_fly(void) {
is(Duck);
$(this->flyable).fly();
}
void Duck_quack(void) {
is(Duck);
$(this->quackable).quack();
}
__new__(Duck) { meth(Duck, set_flyable, set_quackable, fly, quack); }
// super duck
Class(SuperDuck) { extends(Duck); };
void SuperDuck_display(void) { puts("I'm super duck!"); }
__new__(SuperDuck) {
super(Duck);
meth(SuperDuck, display);
}
/* m a i n */
__main__(void) {
my duck = new (SuperDuck);
my fly = new (SuperFly);
my quack = new (SuperQuack);
$(duck).set_flyable(fly);
$(duck).set_quackable(quack);
$(duck).fly();
$(duck).quack();
$(duck).display();
}
$_
- rubyish
- 渐入佳境
- 帖子: 52
- 注册时间: 2018年04月23日 09:58
- 联系:
Re: [ C ] design pattern
523066680 写了:设计模式rubyish 写了:依賴 GCC extension, 非標準C語言。
(以前有段时间你只发英文,是和工作使用的系统有关吗?
$_
- rubyish
- 渐入佳境
- 帖子: 52
- 注册时间: 2018年04月23日 09:58
- 联系:
在线用户
正浏览此版面之用户: 没有注册用户 和 7 访客