2010-08-08 :-)
_ 朝ッ
0900 起床
_ [Python][デザインパターン][Factory]Python でデザインパターン - Factory
書き換え[ 20090506#p04 ]
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Head First デザインパターンを写経する - 4章 Factory パターン - ヨタの日々(2009-05-06)
# http://www.area51.gr.jp/~rin/diary/?date=20090506#p04
class PizzaStore:
def orderPizza(self, _type):
self.pizza = self.createPizza(_type)
self.pizza.prepare()
self.pizza.bake()
self.pizza.cut()
self.pizza.box()
return self.pizza
def createPizza(self, _type): pass
class NYPizzaStore(PizzaStore):
def createPizza(self, item):
if item == "チーズ":
return NYStyleCheesePizza()
## elif item == "野菜":
## return NYStyleVeggiePizza()
## elif item == "クラム":
## return NYStyleClamPizza()
## elif item == "ペパロニ":
## return NYStylePepperoniPizza()
else:
return None
class ChicagoPizzaStore(PizzaStore):
def createPizza(self, item):
if item == "チーズ":
return ChicagoStyleCheesePizza()
## elif item == "野菜":
## return ChicagoStyleVeggiePizza()
## elif item == "クラム":
## return ChicagoStyleClamPizza()
## elif item == "ペパロニ":
## return ChicagoStylePepperoniPizza()
else:
return None
class CaliforniaPizzaStore(PizzaStore):
def createPizza(self, item):
if item == "チーズ":
return CaliforniaStyleCheesePizza()
## elif item == "野菜":
## return CaliforniaStyleVeggiePizza()
## elif item == "クラム":
## return CaliforniaStyleClamPizza()
## elif item == "ペパロニ":
## return CaliforniaStylePepperoniPizza()
else:
return None
class Pizza:
def __init__(self):
self.name = None
self.dough = None
self.sauce = None
self.toppings = None
def prepare(self):
print "%s を下処理" % (self.name)
print "生地をこねる..."
print "ソースを追加..."
print "トッピングを追加:"
for t in self.toppings:
print " %s" % (t)
def bake(self):
print "350度で25分間焼く"
def cut(self):
print "ピザを扇形に切り分ける"
def box(self):
print "PizzaStore の正式な箱にピザを入れる"
def getName(self):
return self.name
class NYStyleCheesePizza(Pizza):
def __init__(self):
self.name = "ニューヨークスタイルのソース&チーズピザ"
self.dough = "薄いクラスト生地"
self.sauce = "マリナラソース"
self.toppings = []
self.toppings.append("粉レッジャーノチーズ")
class ChicagoStyleCheesePizza(Pizza):
def __init__(self):
self.name = "シカゴスタイルのディープディッシュチーズピザ"
self.dough = "極厚クラスト生地"
self.sauce = "プラムトマトソース"
self.toppings = []
self.toppings.append("刻んだモッツァレラチーズ")
def cut(self):
print "ピザを四角形に切り分ける"
def main():
nyStore = NYPizzaStore()
chicagoStore = ChicagoPizzaStore()
pizza = nyStore.orderPizza("チーズ")
print "イーサンの注文は %s" % (pizza.getName())
pizza = chicagoStore.orderPizza("チーズ")
print "ジョエルの注文は %s" % (pizza.getName())
main()
% python factory.py ニューヨークスタイルのソース&チーズピザ を下処理 生地をこねる... ソースを追加... トッピングを追加: 粉レッジャーノチーズ 350度で25分間焼く ピザを扇形に切り分ける PizzaStore の正式な箱にピザを入れる イーサンの注文は ニューヨークスタイルのソース&チーズピザ シカゴスタイルのディープディッシュチーズピザ を下処理 生地をこねる... ソースを追加... トッピングを追加: 刻んだモッツァレラチーズ 350度で25分間焼く ピザを四角形に切り分ける PizzaStore の正式な箱にピザを入れる ジョエルの注文は シカゴスタイルのディープディッシュチーズピザ
_ [Python][デザインパターン][State]Python でデザインパターン - State
書き換え[ 20090531#p06 ]
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Head First デザインパターンを写経する - 10章 State パターン - ヨタの日々(2009-05-31)
# http://www.area51.gr.jp/~rin/diary/?date=20090531#p06
class State:
def insertQuarter(self): pass
def ejectQuarter(self): pass
def turnCrank(self): pass
def dispense(self): pass
class HasQuarterState(State):
def __init__(self, gumballMachine):
self.gumballMachine = gumballMachine
def insertQuarter(self):
print "もう一度25セントを投入することはできません"
def ejectQuarter(self):
print "25セントを返却します"
self.gumballMachine.setState(self.gumballMachine.getNoQuarterState())
def turnCrank(self):
print "クランクを回しました..."
self.gumballMachine.setState(self.gumballMachine.getSoldState())
def dispense(self):
print "販売するガムボールはありません"
def __str__(self):
return "waiting for turn of crank"
class NoQuarterState(State):
def __init__(self, gumballMachine):
self.gumballMachine = gumballMachine
def insertQuarter(self):
print "25セントを投入しました"
self.gumballMachine.setState( self.gumballMachine.getHasQuarterState())
def ejectQuarter(self):
print "25セントを投入していません"
def turnCrank(self):
print "クランクを回しましたが、25セントを投入していません"
def dispense(self):
print "まず支払いをする必要があります"
def __str__(self):
return "25セントが投入されるのを待っています"
class SoldOutState(State):
def __init__(self, gumballMachine):
self.gumballMachine = gumballMachine
def insertQuarter(self):
print "25セントを投入することはできません。このマシンは売り切れです"
def ejectQuarter(self):
print "返金できません。まだ25セントを投入していません"
def turnCrank(self):
print "クランクを回しましたが、ガムボールがありません"
def dispense(self):
print "販売するガムボールはありません"
def __str__(self):
return "売り切れです"
class SoldState(State):
def __init__(self, gumballMachine):
self.gumballMachine = gumballMachine
def insertQuarter(self):
print "お待ちください。すでにガムボールを出しています"
def ejectQuarter(self):
print "申し訳ありません。すでにクランクを回しています"
def turnCrank(self):
print "2回回してもガムボールをもう1つ入手することはできません!"
def dispense(self):
self.gumballMachine.releaseBall
if self.gumballMachine.getCount() > 0:
self.gumballMachine.setState(self.gumballMachine.getNoQuarterState())
else:
print "おっと、ガムボールがなくなりました!"
self.gumballMachine.setState(self.gumballMachine.getSoldOutState())
def __str__(self):
"dispensing a gumball"
class GumballMachine:
def __init__(self, numberGumballs):
self.soldOutState = SoldOutState( self )
self.noQuarterState = NoQuarterState( self )
self.hasQuarterState = HasQuarterState( self )
self.soldState = SoldState( self )
self.state = self.soldOutState
self.count = numberGumballs
if numberGumballs > 0:
self.state = self.noQuarterState
def insertQuarter(self):
self.state.insertQuarter()
def ejectQuarter(self):
self.state.ejectQuarter()
def turnCrank(self):
self.state.turnCrank()
self.state.dispense()
def setState(self, state):
self.state = state
def releaseBall(self):
print "ガムボールがスロットから転がり出てきます"
if self.count != 0:
self.count = self.count - 1
def getCount(self):
return self.count
def refill(self, count):
self.count = count
self.state = self.noQuarterState
def getState(self):
return self.state
def getSoldOutState(self):
return self.soldOutState
def getNoQuarterState(self):
return self.noQuarterState
def getHasQuarterState(self):
return self.hasQuarterState
def getSoldState(self):
return self.soldState
def __str__(self):
result = ""
result += "\nMighty Gumball, Inc."
result += "\nJava対応据付型ガムボール モデル #2004"
result += "\n在庫: #{self.count} 個のガムボール"
result += "\nマシンは%s" % (self.state)
return result
def main():
gumballMachine = GumballMachine( 5 )
print gumballMachine
gumballMachine.insertQuarter()
gumballMachine.turnCrank()
print gumballMachine
gumballMachine.insertQuarter()
gumballMachine.turnCrank()
gumballMachine.insertQuarter()
gumballMachine.turnCrank()
print gumballMachine
main()
% python state.py
Mighty Gumball, Inc.
Java対応据付型ガムボール モデル #2004
在庫: #{self.count} 個のガムボール
マシンは25セントが投入されるのを待っています
25セントを投入しました
クランクを回しました...
Mighty Gumball, Inc.
Java対応据付型ガムボール モデル #2004
在庫: #{self.count} 個のガムボール
マシンは25セントが投入されるのを待っています
25セントを投入しました
クランクを回しました...
25セントを投入しました
クランクを回しました...
Mighty Gumball, Inc.
Java対応据付型ガムボール モデル #2004
在庫: #{self.count} 個のガムボール
マシンは25セントが投入されるのを待っています
_ 盛り上がるネタ
- ベストなテキストエディタはなんですか?
- おすすめのプログラミング言語はなんですか?
- Linux って Windows よりショボイんでしょ?
- ○○されるほうが悪い( ○○には犯罪の名前が入る )
- 処女厨
_ ,
ベイシスケイプ分がまったく不足しているのでトレジャーハンターGを聞くなどしている。
_ sizeof
CentOS 64bit な環境でリベンジ [ 20100502#p02 ]
#include <stdio.h>
int main( int ac, char** av )
{
printf( "%d\n", sizeof( int ) );
printf( "%d\n", sizeof( long ) );
printf( "%d\n", sizeof( void* ) );
return 0;
}
$ gcc size.c && ./a.out 4 8 8
フォカヌポウ
_ LPIC って自慢になるの?
周囲には趣味で LPIC 出題範囲内くらいのことをおこなっているひとはゴロゴロいるし自分でもやってるので( 自宅にサーバー設置して Linux でも *BSD でもいいからテキトーな計算機にテキトーにオペレーティングシステムをインストールして DNS 設定して Postfix などを運用しメーリングリストなどを使えるようにしておけば LPIC レベル 2 まではイケル ) LPIC 取得した程度で自慢になるのかどうか分からん。




LPIC、自己満足のためだったら意味はないといっておこう。<br>業務を割り当てるときの能力を示す指標で使うものだから、<br>そういう使い方してない会社ではどんな資格も価値無いよ^^;
業務ではまったく使わないし、会社からおカネもらえるのでやってるだよ