Factory Method
概要
ファクトリメソッドパターンは、インターフェイス
を用いてオブジェクトの生成を柔軟にするデザインパターン。
必要に応じて生成するクラスを変えることができるので、再利用性を
高めることができる。
・Productクラス
ファクトリクラスヲが生成するインスタンスのインターフェイス
・ConcreteProductクラス
実際に生成されるインスタンス
・Creatorクラス
ファクトリメソッドを用意するクラス
Product型のインスタンスを返す
具象クラスとしてインスタンスを生成させることもある
ただし、柔軟性が下がる
・ConcreteCreatorクラス
ConcreteProductを生成するクラス
Factory Methodの実現方法
・インターフェイスでProduct,Creatorを作る。・それをもとにConcreteProduct,ConcreteCreatorを作る。
interface Creator{ public Product factoryMethod(); } interface Product{} class ConcreteCreator1 implements Creator{ public Product factoryMethod(){ return new ConcreteProduct1(); } class ConcreteCreator2 implements Creator{ public Product factoryMethod(){ return new ConcreteProduct2(); } class ConcreteProduct implements Product{} public class Sample{ public static void main(String[] args){ Creator factory = new ConcreteCreator1();//書き換えるのはここだけ Product product = factory.factoryMethod(); } }
link
http://ja.wikipedia.org/wiki/Factory_Method_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
http://www.nulab.co.jp/designPatterns/designPatterns2/designPatterns2-2.html
理解が深まったら追記
Singleton
概要
シングルトンは外部からのオブジェクトの生成を禁止し
代わりにオブジェクトへのアクセスの手段を提供することで
システム内に存在するオブジェクトが1つであることを保証する。
newを使ってオブジェクトを生成した場合、コンストラクタが
呼び出され初期化される。
しかし、システムの中にはこうした初期化が行われると
不都合な場合がある。
ロケールやLook&Feelなど
システム起動中にオブジェクトを1つだけ生成することを決めていたと
しても、それをオブジェクトを利用する側で管理するのは難しい。
そのためシングルトンが用いられる。
シングルトンの実現方法
・同じ型のインスタンスをクラス変数として宣言
・コンストラクタの可視性をprivateで宣言する。
・getInstance()クラスメソッドによってオブジェクトを返すようにする。
//Javaです public class Singleton{ private static Singleton singleton; //ここでインスタンスをクラス変数として宣言 //... private Singleton(){ //.... } //コンストラクタの可視性をprivateとして宣言 public static Singleton getInstance(){ if( singleton == null ){ singleton = new Singleton(); } return singleton; } //getInstance()クラスメソッドでオブジェクトを返す public synchronized Object getter(Object hoge){ return hoge; } public synchronized void setter(Object hoge){ //... } }
注意
オーバーライドするときはコンストラクタをprotectedまたは
publicにする必要があるので、シングルトンを実現するのは大変。
理解が深まったら追記
http://ja.wikipedia.org/wiki/Singleton_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3#cite_note-GoF-1Linuxのカーネルのバージョンが上がるたびにVMWareが起動しなくなる
こちらのサイトにある手順に従ったら無事起動するようになりました
http://blog.b0ne.me/ubuntu/vmware-error-when-kernel-upgrade
$ uname -r 3.x.x-x-generic $ sudo ln -s /usr/src/linux-headers-3.x.x-x-generic/include/generated/uapi/linux/version.h /usr/src/linux-headers-3.x.x-x-generic/include/linux/version.h $ sudo vmware-modconfig --console --install-all
これで普通に起動するようになりました
python-mecabを入れてみる
mecab -v mecab of 0.98
MeCabのバージョンに合わせたmecab-pythonをインストールしなければなりません。そのため、上記のコマンドでMeCabのバージョンを調べます。
wget http://sourceforge.net/projects/mecab/files/mecab-python/0.98/mecab-python-0.98.tar.gz $ tar xvzf mecab-python-0.98.tar.gz $ cd mecab-python-0.98 $ python setup.py build $ sudo python setup.py build
python Python 2.7.3 (default, Apr 10 2013, 06:20:15) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import MeCab >>>
電王戦のBGM
Massive Attack - Teardrop
Invincible - Muse
The Chemical Brothers - Swoon
Sigur Rós - Inní mér syngur vitleysingur
python-twitterをcentosで使う
yumでeasy_installをインストール
# yum install python-setuptools
easy_installでpython-twitterをインストール
# easy_install python-twitter
# vi test.py
------------------------------------------------------------------------------------------------------------------ #!/usr/bin/env python
# -*- coding: utf-8 -*-
import twitter
api = twitter.Api(
consumer_key = '******',
consumer_secret = '******',
access_token_key = '******',
access_token_secret = '******'
,cache=None)
s = u"てst"
api.PostUpdate(status=s) -------------------------------------------------------------------------------------------------------------------
consumer_key, consumer_secret, access_token_key, access_token_secretは
https://dev.twitter.comでアプリを登録してもらえます