設計模式-適配器模式

abstract class Person
    {
        public string name;
        public Person(string _name)
        {
            name = _name;
        }
        public abstract void Say();
    }
    class EnglishPerson : Person
    {
        public EnglishPerson(string _name) : base(_name)
        {
        }

        public override void Say()
        {
            Console.WriteLine("i'm{0}",name);
        }
    }
        //被適配的對象
    class ChinesePerson : Person
    {
        public ChinesePerson(string _name) : base(_name)
        {
        }

        public override void Say()
        {
            Console.WriteLine("我是{0}", name);
        }
    }
    class JapanPerson : Person
    {
        public JapanPerson(string _name) : base(_name)
        {
        }

        public override void Say()
        {
            Console.WriteLine("私は{0}と申します", name);
        }
    }

        class TranslatorAdapter : Person
    {
        private ChinesePerson cp;
        public TranslatorAdapter(string _name) : base(_name)
        {
            cp = new ChinesePerson(name);
        }
        public override void Say()
        {
            cp.Say();
        }
    }

        //前端
        static void Main(string[] args)
        {
            Person p = new EnglishPerson("JOM");
            p.Say();

            Person p1 = new JapanPerson("アレクサンダー大");
            p1.Say();
            Console.ReadKey();

            //P1,P2來中國旅遊,請了箇中國翻譯
            Console.WriteLine("P1,P2來中國旅遊,請了箇中國翻譯");
            p = new TranslatorAdapter("JOM");
            p.Say();
            p1 = new TranslatorAdapter("アレクサンダー大");
            p1.Say();
            Console.ReadLine();
        }

總結:轉換接口使不兼容的類可以一起工作,一般在軟件開發後期階段使用很多。
與代理模式差別在於
1、代理模式中被代理的類是不允許被客戶端訪問的,
代理類知識轉達被代理類的行爲意圖,
設計時代理類和被代理是同一個接口。
假如被代理類可以直接被訪問,那麼被代理類和代理類最終都是執行的同一個方法。

2、適配器模式是爲了實現:客戶的某個行爲意圖希望轉變成另外一種行爲意圖。
即轉變爲被適配角色的行爲。
比如英文:i love you,中文:我愛你,
在中國老外說:i love you‘’,就需要適配器轉成我愛你,而‘’我愛你‘’就是被適配的對象

使用場景:
老系統:add(param1,param2,param3)
新系統:add(param1,param2,param3,param4)
新系統調用老系統的add,新系統此時就就需要加適配類了。
設計模式-適配器模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章