まさるblog

越後在住子持ちプログラマー奮闘記 - Author:まさる(高野 将、TAKANO Sho)

目次

Blog 利用状況

ニュース

著書

2010/7発売


Web掲載記事

@IT

.NET開発を始めるVB6プログラマーが知るべき9のこと

CodeZine

実例で学ぶASP.NET Webフォーム業務アプリケーション開発のポイント

第1回 3層データバインドを正しく活用しよう(前編)

ブログパーツ


書庫

日記カテゴリ

コミュニティ

デザインパターンを学ぶ~その7:Decoratorパターン(2)~

さて、前回のエントリにてかずくんさんより、

あとDecoratorパターンは、拡張する方向だけでなく、絞込みにも使えます(Filter)

とコメントいただいたので、今回はDecoratorを使ってFilter処理を行ってみましょう。

 

  1. まず、以下の列挙体とクラスを定義します。
    C# Code
    // 性別列挙体
    enum Sex
    {
        Male,
        Female
    }
    
    // 社員クラス
    class Employee
    {
        public int Age;
        public Sex Sex;
        public string Name;
    
        public Employee(int age, Sex sex, string name)
        {
            this.Age = age;
            this.Sex = sex;
            this.Name = name;
        }
    
        public override string ToString()
        {
            return String.Format("Age:{0}, Sex:{1}, Name:{2}"
                , this.Age, this.Sex, this.Name);
        }
    }
    
  2. 次に抽象フィルタクラスを定義します。
    C# Code
    // 抽象フィルタ
    abstract class AbstractFilter
    {
        public abstract List<Employee> GetEmployees();
    
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();
            GetEmployees().ForEach(
                delegate(Employee employee)
                {
                    sb.Append("- ");
                    sb.Append(employee.ToString());
                    sb.Append(Environment.NewLine);
                }
            );
            return sb.ToString();
        }
    }
    
  3. 抽象フィルタクラスを定義し、内部にEmployeeクラスのリストを持つHogeCorpクラスを定義します。
    C# Code
    // Hoge会社
    class HogeCorp : AbstractFilter
    {
        // 社員リスト
        protected List<Employee> employees;
    
        public HogeCorp(List<Employee> employees)
        {
            this.employees = employees;
        }
    
        public override List<Employee> GetEmployees()
        {
            return this.employees;
        }
    }
    
  4. 年齢でフィルタリングするための、AgeFilterクラスを定義します。
    C# Code
    // 年齢フィルタ
    class AgeFilter : AbstractFilter
    {
        // 最低年齢
        private int minAge;
        // 最高年齢
        private int maxAge;
        // 抽象フィルタ変数
        private AbstractFilter abstractFilter;
    
        public AgeFilter(int minAge, int maxAge, AbstractFilter abstractFilter)
        {
            this.minAge = minAge;
            this.maxAge = maxAge;
            this.abstractFilter = abstractFilter;
        }
    
        public override List<Employee> GetEmployees()
        {
            return abstractFilter.GetEmployees().FindAll(
                delegate(Employee employee)
                {
                    // 最低年齢以上、最高年齢以下の社員のみ返す
                    return ( minAge <= employee.Age && employee.Age <= maxAge );
                }
            );
        }
    }
    
  5. 性別でフィルタリングするための、SexFilterクラスを定義します。
    C# Code
    // 性別フィルタ
    class SexFilter : AbstractFilter
    {
        // 性別
        Sex sex;
        private AbstractFilter abstractFilter;
    
        public SexFilter(Sex sex, AbstractFilter abstractFilter)
        {
            this.sex = sex;
            this.abstractFilter = abstractFilter;
        }
    
        public override List<Employee> GetEmployees()
        {
            return abstractFilter.GetEmployees().FindAll(
                delegate(Employee employee)
                {
                    // 指定された性別の社員のみ返す
                    return ( employee.Sex == this.sex );
                }
            );
        }
    }
    

これで準備はOKです。早速実行してみましょう。

 

実行用コード

C# Code
class Program
{
    static void Main(string[] args)
    {
        // Hoge会社のインスタンス生成
        HogeCorp hogeCorp = new HogeCorp(
            new List<Employee>(
                new Employee[] {
                    new Employee(18,    Sex.Male,    "太郎")
                    ,new Employee(25,    Sex.Female,    "幸子")
                    ,new Employee(22,    Sex.Male,    "浩二")
                    ,new Employee(35,    Sex.Female,    "茜")
                    ,new Employee(30,    Sex.Female,    "葉月")
                    ,new Employee(27,    Sex.Male,    "智")
                }
            )
        );

        Console.WriteLine("■全社員");
        Console.WriteLine(hogeCorp);

        Console.WriteLine("■性別男性でフィルタリング");
        SexFilter sexFilter = new SexFilter(Sex.Male, hogeCorp);
        Console.WriteLine(sexFilter);

        Console.WriteLine("■20歳以上、30歳以下でフィルタリング");
        AgeFilter ageFilter = new AgeFilter(20, 30, sexFilter);
        Console.WriteLine(ageFilter);

        Console.ReadLine();
    }
}

実行結果

■全社員
- Age:18, Sex:Male, Name:太郎
- Age:25, Sex:Female, Name:幸子
- Age:22, Sex:Male, Name:浩二
- Age:35, Sex:Female, Name:茜
- Age:30, Sex:Female, Name:葉月
- Age:27, Sex:Male, Name:智

■性別男性でフィルタリング
- Age:18, Sex:Male, Name:太郎
- Age:22, Sex:Male, Name:浩二
- Age:27, Sex:Male, Name:智

■20歳以上、30歳以下でフィルタリング
- Age:22, Sex:Male, Name:浩二
- Age:27, Sex:Male, Name:智

こんな感じで、見事にフィルタリングされた結果が出力されました。でも、順番を逆にしてもしっかりフィルタリングされなければ、Decoratorの意味がありませんよね。ってことでやってみるとこんな感じ。

実行結果 その2

■全社員
- Age:18, Sex:Male, Name:太郎
- Age:25, Sex:Female, Name:幸子
- Age:22, Sex:Male, Name:浩二
- Age:35, Sex:Female, Name:茜
- Age:30, Sex:Female, Name:葉月
- Age:27, Sex:Male, Name:智

■20歳以上、30歳以下でフィルタリング
- Age:25, Sex:Female, Name:幸子
- Age:22, Sex:Male, Name:浩二
- Age:30, Sex:Female, Name:葉月
- Age:27, Sex:Male, Name:智

■性別男性でフィルタリング
- Age:22, Sex:Male, Name:浩二
- Age:27, Sex:Male, Name:智

問題ありませんね。どうやら無事にできたようです。

 

というわけで、今回はDecoratorを使ってFilter処理やってみましたが、この程度だったらこないだの東京勉強会#8でεπιστημηさんがやってた、IEnumerable<T>を使ったやり方のほうが汎用的だし、簡単かも。(ビデオまだかなー^^)

でも、ある程度決まったパターンを今回みたいにクラス化しておけば、初心者、初級者さんたちには使いやすいかな?

 

さて、次回はかずくんさんからの、もう一つの課題「Pipe」をDecoratorでやってみようと思います。

投稿日時 : 2007年6月12日 0:13

Feedback

# re: デザインパターンを学ぶ~その7:Decoratorパターン(2)~ 2007/06/16 11:15 けろ

はじめまして。あまりにわかりやすく書かれていたので
コメントさせて頂きました。

Decoratorパターンですか。初めて知りました。
見やすくてわかりやすいですね^^ 気に入りました。

2.0になってから、この手のものは、Predicateデリゲート
(http://msdn2.microsoft.com/ja-jp/library/bfcke1bz(VS.80).aspx)

でもできるんですが、考え方が素直じゃないので、
初心者さんたちには、少しつらいんですよね。

今後、参考にさせて頂きます。

# re: デザインパターンを学ぶ~その7:Decoratorパターン(2)~ 2007/06/16 11:52 まさる

>けろさん
はじめまして。

>あまりにわかりやすく書かれていたので
そう言っていただけるとありがたいです。
今後もそういってもらえるよう、がんばります^^

# re: デザインパターンを学ぶ~その7:Decoratorパターン(2)~ 2007/06/16 14:30 けろ

よく見たら、「GetEmployees().FindAll」
としているので、Predicateデリゲートは、
匿名メソッドとして使われていたんですね。
見逃してました。
C#の人には、とてもわかりやすいと思います。

VB.NETの場合は、匿名メソッドが使えないので、
FindAllする時(Predicateデリゲートを作る時)は、
比較用するメソッドを明示的に用意してあげる
必要がありそうですね。
なので、VB.NETにこのサンプルを置き換える時は、
少し注意が必要かもって思いました。

# デザインパターンを学ぶ~その8:Decoratorパターン(3)~ 2007/06/18 0:09 まさるblog

デザインパターンを学ぶ~その8:Decoratorパターン(3)~

# デザインパターンを学ぶ~その11:ちょっとだけDecoratorパターン(1)~ 2007/08/17 14:34 まさるblog

デザインパターンを学ぶ~その11:ちょっとだけDecoratorパターン(1)~

# kveRKJDbhElkPcif 2014/08/28 11:05 http://crorkz.com/

gayRhM As I web site possessor I believe the content material here is rattling magnificent , appreciate it for your hard work. You should keep it up forever! Best of luck.

# doieGLQJpXYpTkc 2014/08/29 7:18 http://podle.pl/

Of course, what a fantastic blog and instructive posts, I will bookmark your website.Have an awsome day!

# DTtQxncbbf 2014/09/09 10:47 http://vender-na-internet.com/luis-souto/

I used to be suggested this website by my cousin. I am now not sure whether this post is written by way of him as no one else understand such detailed about my problem. You are incredible! Thanks!

# MANvhKmGAASfGbMt 2014/09/10 7:08 http://www.theboatonlinestore.co.uk/

Would you be concerned with exchanging links?

# dImuSoaTZvTsswGZE 2014/09/14 19:39 http://distancity.com/

you've a fantastic weblog here! would you wish to make some invite posts on my blog?

# mCeiZluDAIThlRHqSm 2019/04/16 6:47 https://www.suba.me/

813Fle There may be noticeably a bundle to find out about this. I assume you made certain good factors in options also.

# caBqeieyUEAdfwJKSvw 2019/04/27 3:43 https://seederden2.kinja.com/

This site was how do I say it? Relevant!! Finally I ave found something which helped me. Many thanks!

# tlpzKBetTNNRWg 2019/04/27 4:06 https://www.collegian.psu.edu/users/profile/harry2

It is hard to uncover knowledgeable individuals with this topic, nonetheless you look like there as extra that you are referring to! Thanks

# CPTkvtsssIs 2019/04/28 5:41 http://bit.ly/2KDoVtS

Wow, awesome blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your website is excellent, as well as the content!

# OOZTJlVsFjkf 2019/04/29 18:57 http://www.dumpstermarket.com

Wow! This can be one particular of the most helpful blogs We ave ever arrive across on this subject. Basically Magnificent. I am also an expert in this topic so I can understand your hard work.

# rwFWmCMGwWpj 2019/04/30 21:00 https://cyber-hub.net/

Looking forward to reading more. Great article.Much thanks again. Keep writing.

# WAARSaqjnG 2019/05/01 21:39 http://b3.zcubes.com/v.aspx?mid=864326

There is apparently a lot to identify about this. I think you made certain good points in features also.

# eTDiOoEGsJ 2019/05/02 4:02 http://odbo.biz/users/MatPrarffup346

wow, awesome blog.Much thanks again. Fantastic.

# EjFGgGNLJBydKqGoZFa 2019/05/02 21:49 https://www.ljwelding.com/hubfs/tank-fit-up-bed-sy

Spot on with this write-up, I genuinely assume this site needs considerably much more consideration. I all probably be once a lot more to read far a lot more, thanks for that info.

# VUdELMussJBYGfJew 2019/05/02 23:37 https://www.ljwelding.com/hubfs/tank-growing-line-

I think other web site proprietors should take this site as an model, very clean and magnificent user friendly style and design, let alone the content. You are an expert in this topic!

# rQSUhnEAVfqAPWasiFy 2019/05/03 3:46 http://abacusicc.com/__media__/js/netsoltrademark.

Some genuinely quality articles on this site, bookmarked.

# OsarkRQKAOp 2019/05/03 12:07 https://mveit.com/escorts/united-states/san-diego-

we came across a cool website that you just may possibly delight in. Take a search when you want

# yXsJSZKqhprfAzEQ 2019/05/03 17:19 https://mveit.com/escorts/netherlands/amsterdam

Merely a smiling visitant here to share the love (:, btw great design. аАТ?а?а?аАТ?а? Treat the other man as faith gently it is all he has to believe with.аАТ?а? аАТ?а?а? by Athenus.

# XtjbUdChUQTbO 2019/05/03 23:37 https://mveit.com/escorts/united-states/los-angele

Wonderful post, you have pointed out some amazing details , I besides believe this s a really excellent web site.

# EBxCCMOYMJdHynGkd 2019/05/04 1:58 https://www.openstreetmap.org/user/speculsurie

Im thankful for the blog.Really looking forward to read more. Fantastic.

# QlloofOIxuUJZy 2019/05/07 17:27 https://www.mtcheat.com/

website and detailed information you provide. It as good to come

# ZFoXUyjYWDHfJh 2019/05/08 21:20 https://ysmarketing.co.uk/

I value the post.Really looking forward to read more. Want more.

# wOGtgbBJGCztUiiMID 2019/05/09 1:06 https://www.youtube.com/watch?v=Q5PZWHf-Uh0

you will discover so lots of careers to pick out from however the unemployment rate currently have risen::

# XekDtVChJWTRhafc 2019/05/09 1:36 https://disqus.com/home/channel/new/discussion/cha

This text is worth everyone as attention. Where can I find out more?

# mPbxzbvCbTaDHq 2019/05/09 2:17 http://serenascott.pen.io/

It as difficult to find well-informed people in this particular subject, however, you seem like you know what you are talking about! Thanks

# GzyYzCstSCulipcGnWO 2019/05/09 6:01 https://www.youtube.com/watch?v=9-d7Un-d7l4

I value the article post.Much thanks again.

# lCkmSuZxHLoEoy 2019/05/09 17:28 http://mickiebussiexde.nightsgarden.com/there-more

There as a lot of folks that I think would

# ktpJbBrafpIRv 2019/05/10 5:40 https://disqus.com/home/discussion/channel-new/the

mac makeup sale cheap I think other site proprietors should take this site as an model, very clean and wonderful user friendly style and design, let alone the content. You are an expert in this topic!

# nzFSgPTSpxGQSEIPQ 2019/05/10 6:12 https://bgx77.com/

you can always count on search engine marketing if you want to promote products online.

# YdTtRRPkqGTpaeWCxFH 2019/05/10 8:27 https://www.dajaba88.com/

I simply could not depart your web site prior to suggesting that I extremely enjoyed the standard info a person provide on your guests? Is going to be again often in order to check out new posts

# xjoBvYvoeARCh 2019/05/10 20:14 https://cansoft.com

We stumbled over here by a different page and thought I might check things out. I like what I see so now i am following you. Look forward to looking at your web page for a second time.

# OwZanSNMrgfDlfLXQ 2019/05/10 22:20 http://www.manozaidimai.lt/profile/botanywatch2

magnificent submit, very informative. I wonder why the opposite experts of this sector do not realize this. You should continue your writing. I am confident, you ave a great readers a base already!

# bVjtvsfFrcHyymRpzs 2019/05/11 0:51 https://www.youtube.com/watch?v=Fz3E5xkUlW8

Wonderful post! We are linking to this great content on our site. Keep up the good writing.

# yhcqdupmmKtrobaEV 2019/05/13 21:55 https://www.smore.com/uce3p-volume-pills-review

Wow! This can be one particular of the most useful blogs We have ever arrive across on this subject. Actually Great. I am also an expert in this topic so I can understand your hard work.

# zkEMiaPjPaccdHeZ 2019/05/14 6:34 http://www.sopcich.com/UserProfile/tabid/42/UserID

Im no professional, but I believe you just made the best point. You clearly understand what youre talking about, and I can really get behind that. Thanks for being so upfront and so truthful.

# XyvNvKWaVmo 2019/05/14 22:32 https://totocenter77.com/

Really great info can be found on web blog. That is true wisdom, to know how to alter one as mind when occasion demands it. by Terence.

# yUxSeArkIjlZZHEf 2019/05/15 2:28 https://www.mtcheat.com/

Simply wanna input that you have a very decent web site , I the layout it really stands out.

# VZJCYTAVLYDc 2019/05/15 9:14 https://www.navy-net.co.uk/rrpedia/All_Of_Your_Eye

Really appreciate you sharing this blog. Much obliged.

# vXsVENLskGRT 2019/05/15 11:23 http://intranet.cammanagementsolutions.com/UserPro

pretty useful stuff, overall I believe this is worthy of a bookmark, thanks

# IIfFhOMPHV 2019/05/15 18:41 https://www.anobii.com/groups/01eafd3aa9a4bfa15e/

This is a topic which is near to my heart Take care! Where are your contact details though?

# scqRMuqexJxjNo 2019/05/15 23:46 https://www.kyraclinicindia.com/

When some one searches for his necessary thing, therefore he/she needs to be available that in detail, therefore that thing is maintained over here.

# OVkILAAsOps 2019/05/16 20:23 http://www.authorstream.com/Presentation/MadihaCop

What as up everyone, it as my first pay a visit at this

# sbrRYFpLtlGSifJmTzf 2019/05/16 20:47 https://reelgame.net/

What would you like to see out of a creative writing short story?

# YiYMghAOPP 2019/05/16 22:59 http://d2-tech.com/__media__/js/netsoltrademark.ph

Lovely site! I am loving it!! Will come back again. I am bookmarking your feeds also

# fWdoInyyAUj 2019/05/17 5:31 https://www.youtube.com/watch?v=Q5PZWHf-Uh0

some times its a pain in the ass to read what people wrote but this website is very user genial !.

# CaCTvLolicUwcMQ 2019/05/17 5:35 https://www.ttosite.com/

The article is worth reading, I like it very much. I will keep your new articles.

# szLvOOtJoYpqXpO 2019/05/17 18:29 https://www.youtube.com/watch?v=9-d7Un-d7l4

Your style is so unique in comparison to other people I ave read stuff from. Many thanks for posting when you ave got the opportunity, Guess I will just bookmark this web site.

# mJdYapVevugO 2019/05/17 23:47 http://georgiantheatre.ge/user/adeddetry693/

understand this topic. You understand a whole lot its almost hard to argue with you (not that I really would want toHaHa).

# XbrKNDpfQLhmRizvfy 2019/05/18 3:58 https://tinyseotool.com/

Very good publish, thanks a lot for sharing. Do you happen to have an RSS feed I can subscribe to?

# fGtXrSsbhTKbaAQyph 2019/05/18 12:17 https://www.dajaba88.com/

Some genuinely fantastic info , Gladiolus I detected this.

# vMgHCYzveyplC 2019/05/20 16:35 https://nameaire.com

There is definately a lot to find out about this subject. I really like all the points you have made.

# xRshQgxaVYuEdCh 2019/05/20 20:48 http://www.ovidiopol.net/modules.php?name=Your_Acc

This site really has all the info I needed concerning this subject and didn at know who to ask.

# NqDQtaZbCLLBMyb 2019/05/20 22:21 http://newslinkzones.xyz/story.php?title=to-read-m

Red your website put up and liked it. Have you at any time considered about visitor submitting on other associated blogs similar to your website?

# LEAtEIcgXy 2019/05/22 21:13 https://bgx77.com/

Thanks for the article post.Really looking forward to read more. Great.

# SjFFMXzirjgQ 2019/05/23 2:01 https://www.mtcheat.com/

Where I come from we don at get much of this sort of writing. Got to look around all over the internet for such relevant pieces. I congratulate your effort. Keep it up!

# AdxlUOCAXTSjgNtcEA 2019/05/23 16:15 https://www.combatfitgear.com

Thanks , I have just been looking for info about this subject for ages and yours is the best I ave discovered till now. But, what about the conclusion? Are you sure about the source?

# sHSfoqAJKiquFqQsOch 2019/05/24 0:27 https://www.nightwatchng.com/&#8206;category/d

SAC LOUIS VUITTON PAS CHER ??????30????????????????5??????????????? | ????????

# eokKWNPdXAHEJ 2019/05/24 10:48 http://downwindsports.com/icefest/2014/04/ice-cond

I was recommended this website by my cousin. I am not sure whether this post is written by him as nobody else know such detailed about my difficulty. You are wonderful! Thanks!

# qvAjXiQZyP 2019/05/24 16:29 http://tutorialabc.com

It is truly a great and useful piece of information. I am satisfied that you just shared this useful info with us. Please stay us informed like this. Thanks for sharing.

# jUCqpveJNGRTZSLZwsz 2019/05/24 18:43 http://poster.berdyansk.net/user/Swoglegrery506/

There is apparently a bunch to identify about this. I believe you made various good points in features also.

# EbeikqbUoiAomfbuXH 2019/05/24 22:52 https://www.minds.com/blog/view/978372524940660736

This awesome blog is no doubt educating additionally informative. I have picked up many helpful things out of this amazing blog. I ad love to come back again soon. Thanks a lot!

# QNUHNdTkEAbqZUsO 2019/05/24 23:40 http://tutorialabc.com

Im thankful for the article.Thanks Again. Great.

# BNnMwTJiVhRgmzX 2019/05/25 2:21 http://intiveterinaris.com/?p=690

There is definately a lot to learn about this issue. I like all the points you ave made.

# YuYDNhJUzKUrNPTpE 2019/05/25 11:29 https://writeablog.net/threadglass28/victoria-bc-a

Thanks for sharing, this is a fantastic blog.Really looking forward to read more. Fantastic.

# PFZjExhmTcHW 2019/05/27 20:29 https://bgx77.com/

You produced some decent points there. I looked on the net to the issue and found many people go together with together together with your internet web site.

# pWhERDalhAugJb 2019/05/28 1:56 https://ygx77.com/

Informative article, totally what I was looking for.

# aHjJNiepIT 2019/05/29 0:05 http://knightflower75.blogieren.com/Erstes-Blog-b1

The most effective and clear News and why it means quite a bit.

# eTicaEVeTZW 2019/05/29 18:59 https://lastv24.com/

This blog is really cool and besides diverting. I have picked many useful tips out of this source. I ad love to come back again soon. Thanks a bunch!

# iyogAexpTHbnSFGRe 2019/05/29 19:06 http://etcpublishing.net/__media__/js/netsoltradem

X amateurs film x amateurs gratuit Look into my page film porno gratuit

# ILbrqfSqiy 2019/05/29 19:49 https://www.ghanagospelsongs.com

Wow, superb blog layout! How long have you been blogging for? you made blogging look easy. The overall look of your website is great, let alone the content!

# vEZClOTMlKNpUCWM 2019/05/29 22:53 http://www.crecso.com/semalt-seo-services/

Link exchange is nothing else but it is simply placing the other person as web site link on your page at suitable place and other person will also do same for you.

# iKZLrYdSBAyo 2019/05/30 5:08 http://menujames8.nation2.com/everything-you-neede

It as really very complex in this full of activity life to listen news on TV, thus I simply use the web for that reason, and obtain the newest news.

# BtIqToPjeNTB 2019/05/30 5:42 https://ygx77.com/

It as great that you are getting ideas from this paragraph as well as from our discussion made here.|

# oPTatPhSwZbiMvoovQ 2019/06/03 22:17 http://totocenter77.com/

very few web sites that take place to become detailed beneath, from our point of view are undoubtedly very well really worth checking out

# NattmoMYmXySxfaJX 2019/06/04 1:01 https://ygx77.com/

Your style is really unique in comparison to other folks I ave read stuff from. Thanks for posting when you have the opportunity, Guess I will just bookmark this web site.

# KlTWOAlxbWb 2019/06/04 1:53 https://www.mtcheat.com/

Please check out my web site too and let me know what

# ijrfnbYzqNGw 2019/06/04 13:12 http://webopedia.site/story.php?id=6444

Wow, amazing blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your website is great, let alone the content!

# qOgOiTzdWRuJWaJkoh 2019/06/05 2:31 https://www.yetenegim.net/members/hemppot8/activit

Thanks a lot for sharing this with all of us you actually know what you are talking about! Bookmarked. Kindly also visit my web site =). We could have a link exchange agreement between us!

# rIGZAMFpDlQ 2019/06/05 23:40 https://betmantoto.net/

That is a beautiful picture with very good light -)

# BcxTyhLxKPwBqSxUgE 2019/06/07 17:05 https://ygx77.com/

Really appreciate you sharing this article. Keep writing.

# CpyzcqwfOZazXoq 2019/06/07 21:47 https://www.mtcheat.com/

This information is magnificent. I understand and respect your clear-cut points. I am impressed with your writing style and how well you express your thoughts.

# cuJWqMpOkv 2019/06/08 3:00 https://mt-ryan.com

This is my first time pay a quick visit at here and i am in fact pleassant to read everthing at alone place.

# MAcDnnWnByhvBxyHnG 2019/06/08 6:29 https://www.mtpolice.com/

This excellent website truly has all of the information I needed about this subject and didn at know who to ask.

# tTKniSwukwMqKPfDO 2019/06/08 7:08 https://www.mjtoto.com/

I understand this is off topic nevertheless I just had

# gkBvrQeIJJEMWaEFbxf 2019/06/10 19:23 https://xnxxbrazzers.com/

You can certainly see your enthusiasm within the paintings you write. The arena hopes for more passionate writers like you who are not afraid to say how they believe. Always go after your heart.

# aRyzGwHYWqILrDRS 2019/06/11 2:09 http://secretgirlgames.com/profile/hughswint36

Wow, wonderful weblog format! How long have you been blogging for? you made running a blog glance easy. The overall glance of your web site is fantastic, let alone the content material!

# vCaBCWmKsAwEJ 2019/06/12 6:52 http://nifnif.info/user/Batroamimiz398/

simply click the next internet page WALSH | ENDORA

# EHmdgfPKVpaFygVZA 2019/06/12 22:20 https://www.anugerahhomestay.com/

I think this is a real great blog.Much thanks again. Want more.

# EqAJFqjmeUOtyDTf 2019/06/14 22:44 http://betahouring.site/story.php?id=25587

This very blog is no doubt entertaining and also factual. I have discovered a bunch of handy tips out of this amazing blog. I ad love to come back every once in a while. Thanks a bunch!

# fckyENorCZqb 2019/06/15 4:18 http://travianas.lt/user/vasmimica472/

This actually answered my drawback, thanks!

# lHWSQmFJcrVoHVQTSq 2019/06/17 21:49 https://www.homofilms.be

Simply wanna remark that you have a very decent site, I love the design it really stands out.

# WZoblRMGFFeokkVUvGe 2019/06/18 0:02 https://my.getjealous.com/garagedrama2

Thanks for sharing, this is a fantastic article.Thanks Again. Great.

# kQjiKClVFRalZNdT 2019/06/19 1:31 http://www.duo.no/

naturally like your web-site however you have to check the spelling

# rBwGZEFoAqCYRBmQcAG 2019/06/20 18:00 http://seedygames.com/blog/view/53088/selecting-th

Utterly indited articles , regards for information.

# ixXIENhaEjtajbMa 2019/06/21 20:26 http://daewoo.xn--mgbeyn7dkngwaoee.com/

If some one needs to be updated with newest technologies therefore

# sgxmNgyjcynqwklkuB 2019/06/22 1:00 https://vimeo.com/monszonnihaus

I truly appreciate this post.Really looking forward to read more. Awesome.

# bJKJKFDUuqdSQHUumVt 2019/06/22 3:46 https://www.vuxen.no/

Of course, what a splendid website and instructive posts, I definitely will bookmark your website.Have an awsome day!

# wOoUiKHZEPZXCo 2019/06/22 5:09 http://7.ly/yG9y+

You have made some really good points there. I checked on the net for more information about the issue and found most people will go along with your views on this website.

# GWqmDCzYcjVmwKt 2019/06/24 10:08 http://york2725up.electrico.me/with-a-first-birthd

to actually obtain valuable facts concerning my study and knowledge.

# aZZFvEKGKHDSPxhBgbV 2019/06/24 15:53 http://vitaliyybjem.innoarticles.com/al-suit-en-pa

This is a terrific website. and i need to take a look at this just about every day of your week ,

# EmsRkeWoGz 2019/06/25 3:31 https://www.healthy-bodies.org/finding-the-perfect

That is a good tip especially to those new to the blogosphere. Brief but very precise info Thanks for sharing this one. A must read article!

# tKqsRpAMGuYDJCC 2019/06/25 5:21 https://stockdime8.webs.com/apps/blog/show/4688566

seeing very good gains. If you know of any please share.

# QcoaljeyNKkcUG 2019/06/25 23:51 https://topbestbrand.com/&#3626;&#3621;&am

Piece of writing writing is also a excitement, if you be acquainted with afterward you can write or else it is complicated to write.

# eiTruLXrgzzcJVKyQV 2019/06/26 4:51 https://topbestbrand.com/&#3610;&#3619;&am

your web hosting is OK? Not that I am complaining, but slow loading instances

# ubmjauOkhqSze 2019/06/26 15:52 http://bgtopsport.com/user/arerapexign230/

What as Happening i am new to this, I stumbled upon this I have found It absolutely useful and it has helped me out loads. I hope to contribute & help other users like its helped me. Good job.

# dvqTUchLeUS 2019/06/26 21:03 https://zysk24.com/e-mail-marketing/najlepszy-prog

This blog was how do you say it? Relevant!! Finally I ave found something that helped me. Thanks!

# MFdKewFPYc 2019/06/27 3:04 https://wintersnordentoft043.shutterfly.com/22

Some times its a pain in the ass to read what website owners wrote but this website is rattling user genial!.

# AGmzJEqrQNUGPJxFfBy 2019/06/27 17:35 http://speedtest.website/

That is a great tip especially to those fresh to the blogosphere. Simple but very precise information Many thanks for sharing this one. A must read article!

# lwktJyDObeCUzsf 2019/06/28 20:07 https://www.jaffainc.com/Whatsnext.htm

Spot on with this write-up, I really suppose this web site wants way more consideration. I?ll most likely be once more to learn way more, thanks for that info.

# yaEqFkCpCC 2019/06/28 23:13 http://eukallos.edu.ba/

we came across a cool internet site that you just may well appreciate. Take a search in the event you want

# NzilAuFIVYquWcJEqg 2019/06/29 8:02 https://emergencyrestorationteam.com/

My brother rec?mmended I might like thаАа?б?Т€Т?s websаАа?б?Т€Т?te.

# CEQyklsonjgjGcRGzIW 2019/06/29 12:48 https://www.iglobal.co/united-states/detroit/robs-

I think this is a real great article. Want more.

# Howdy! I could have sworn I?ve been to this site before but after looking at many of the posts I realized it?s new to me. Nonetheless, I?m definitely delighted I found it and I?ll be book-marking it and checking back often! 2019/09/06 7:37 Howdy! I could have sworn I?ve been to this site b

Howdy! I could have sworn I?ve been to this site before but after
looking at many of the posts I realized it?s new to me.

Nonetheless, I?m definitely delighted I found
it and I?ll be book-marking it and checking back often!

# CPcEyjltWJ 2021/07/03 4:31 https://www.blogger.com/profile/060647091882378654

I truly appreciate this blog.Really looking forward to read more. Great.

# Illikebuisse safng 2021/07/04 9:07 pharmaceptica

tadalafil generic https://www.pharmaceptica.com/

# re: ???????????~??7:Decorator????(2)~ 2021/08/07 14:32 hydrochloraquine

chloroquine tab https://chloroquineorigin.com/# hydroxychloroquine for malaria

# generic hydroxychloroquine 2022/12/25 13:37 MorrisReaks

http://www.hydroxychloroquinex.com/ order chloroquine online cheap

タイトル
名前
Url
コメント