Design Pattern、ストアド

Design Pattern 生成に関するパターン

Design Pattern 構造に関するパターン

  • Adapter パターン
    • 元々関連性のない2つのクラスを接続するクラスを作る。
  • Bridge パターン
    • クラスなどの実装と、呼出し側の間の橋渡しをするクラスを用意し、実装を隠蔽する。
  • Composite パターン
    • 再帰的な構造を表現する。
  • Decorator パターン
    • あるインスタンスに対し、動的に付加機能を追加する。Filterとも呼ばれる。
  • Facade パターン
    • 複数のサブシステムの窓口となる共通のインタフェースを提供する。
  • Flyweight パターン
  • Proxy パターン
    • 共通のインタフェースをもつインスタンスを内包し、利用者からのアクセスを代理する。Wrapperとも呼ばれる。

Design Pattern 振る舞いに関するパターン

  • Chain of Responsibility パターン
    • イベントの送受信を行う複数のオブジェクトを鎖状につなぎ、それらの間をイベントが渡されてゆくようにする。
  • Command パターン
    • 複数の異なる操作について、それぞれに対応するオブジェクトを用意し、オブジェクトを切り替えることで操作の切替えを実現する。
  • Interpreter パターン
    • 構文解析のために、文法規則を反映するクラス構造を作る。
  • Iterator パターン
    • 複数の要素を内包するオブジェクトのすべての要素に順にアクセスする方法を提供する。反復子。
  • Mediator パターン
    • オブジェクト間の相互作用を仲介するオブジェクトを定義し、オブジェクト間の結合度を低くする。
  • Memento パターン
    • データ構造に対する一連の操作のそれぞれを記録しておき、以前の状態の復帰または操作の再現が行えるようにする。
  • Observer パターン
  • State パターン
    • オブジェクトの状態を変化させることで、処理内容を変えられるようにする。
  • Strategy パターン
  • Template Method パターン
    • あるアルゴリズムの途中経過で必要な処理を抽象メソッドに委ね、その実装を変えることで処理が変えられるようにする。
  • Visitor パターン
    • データ構造を保持するクラスと、それに対して処理を行うクラスを分離する。

ストアプロシージャドメモ(SQL Server)

  • 基本
create procedure ストアドプロシージャ名
 --引数宣言
as 
declare 
 --変数宣言

begin
 --処理内容
end
create procedure ストアドプロシージャ名 
 --引数宣言
as
declare  
 --変数宣言
begin try
 
 --トランザクションの開始
 begin transaction
 
 -- 例外が発生する可能性がある処理
 
 --トランザクションをコミット
 commit transaction
end try

 -- 例外処理
begin catch
 -- トランザクションロールバック
 rollback transaction
 return error_number()
end catch

return 0
create procedure sp_get_suryo
	@id numeric,
	@c numeric output
as
begin
	select @c=sum(数量) from 売上データ where 商品ID=@id
end
declare @suryo numeric
exec sp_get_suryo 1,@suryo output
select @sury
declare @suryo numeric
exec sp_get_suryo @id=1,@c=@suryo output
select @suryo
create procedure sp_retest
 @value numeric
as
begin
 return @value*2;
end
declare @ret numeric
exec @ret=sp_retest @value=1
select @ret
create procedure sp_vartest
as
declare 
 @i numeric,
 @j varchar(20)
begin
 set @i=1
 select @j=顧客名 from 顧客マスタ where 顧客ID=1
end
exec sp_vartest
declare @n numeric
set @n=1

if (@n=1)
 print 'n = 1'
else if(@n=2)
 print 'n = 2'
else
 print 'n != 1 or 2'
declare @i numeric
set @i=0

while (@i <= 10)
begin
 set @i = @i + 1
 if(@i=2) continue
 if(@i=5) break
 select @i
end
declare @i numeric
set @i=0

label:
 if(@i < 10)
 begin
  set @i=@i+1
  select @i
  goto label
 end
create procedure sp_get_sum_oroshi
 @total numeric output
as
 declare cur CURSOR local for select isnull(卸単価,0) from 商品マスタ
 declare @price numeric
begin
 set @total = 0
 open cur
 
 fetch next from cur into @price
 while @@fetch_status=0
 begin
  set @total=@total+@price;
  fetch next from cur into @price
 end

 close cur
 deallocate cur
end
declare @total numeric
exec sp_get_sum_oroshi @total output
select @total