适配器模式和装饰模式

前言:设计模式需要反复的用。只有不断学习不断总结,才能真正让别人的知识,变成自己的。

(一)适配器模式

1.是什么

将一个类的接口转换成客户希望的另一个接口。使得原本由于接口不兼容而不能一起工作的那个类可以一起工作。

2.应用

两个国家做贸易,需要进行多次的谈判和签合同。但是语言不通。一个只会说汉语,另一个只会说英语。这时候需要一个即会说英语又会说汉语的翻译,来实现两者之间的沟通。

3.优点

在系统的数据和行文都正确,但是接口与复用环境不一致的时候,使用适配器可以复用一些现存的类。

4.缺点

如果能够事先预防接口不同的问题,不匹配的问题就不会发生。在有小的接口不统一问题发生时,及时重构,问题不至于扩大。只有碰到无法改变原有设计和代码的情况时,才考虑适配。因此适配器模式只能做到事后的解决问题。而不能起到预防的作用。

5.类图

这里写图片描述

6.代码实现

①代表类

namespace 适配器模式
{

    //代表类  抽象出一个代表类,有谈判和签合同的方法
    abstract class represent
    {
        protected string name;
        public represent(string name)
        {
            this.name = name;
        }
        public abstract void negotiation();
        public abstract void sign();
    }

②第一次、第二次协商类

//第一次、第二次协商类
 
    class Firsttalk : represent
    {
        public  Firsttalk(string name) :base(name)
        {
        }
        public override void negotiation()
        {
            Console.WriteLine("第一次{0}谈判", name);
        }
        public override void sign()
        {
            Console.WriteLine("第一次{0}签合同", name);
        }

    }

    class Secondtalk : represent
    {
        public Secondtalk(string name)
            : base(name)
        {
        }
        public override void negotiation()
        {
            Console.WriteLine("第二次{0}谈判", name);
        }
        public override void sign()
        {
            Console.WriteLine("第二次{0}签合同", name);
        }

    }

③需要转换的类

 //需要转换的类
    class Chinapresent
    {
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public void 谈判()
        {
            Console.WriteLine("中国代表{0}谈判", name);
        }

        public void 签合同()
        {
            Console.WriteLine("中国代表{0}签合同", name);
        }

    }

④翻译者


    //翻译者类
    class Translator : represent
    {
        private Chinapresent zgdb = new Chinapresent();

        public Translator(string name)
            : base(name)
        {
            zgdb.Name = name;
        }
        public override void negotiation()
        {
            zgdb.谈判();

        }
        public override void sign()
        {
            zgdb.签合同();

        }
    }

⑤客户端代码


     class Program
      {
          static void Main(string[] args)
          {
              represent c = new Firsttalk("中国代表");
              c.negotiation();
              c.sign();

              represent a = new Secondtalk("美国代表");
              a.negotiation();
              a.sign();

              Console.Read();
          }
      }
}

(二)装饰模式

1.是什么

动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。

2.应用

很多小女孩都喜欢芭比娃娃,这时候妈妈给小女孩买了个芭比娃娃,还有很多芭比娃娃的衣服。这时候,只需要一个芭比娃娃和很多衣服,就可以把芭比娃娃装扮成不同风格。如果这个时候,妈妈又给小女孩买了一个男芭比娃娃。小女孩,仍然可以用之前的衣服实现对于男芭比娃娃的换装展示。这样比妈妈给小女孩买一个穿着固定衣服不能换装的芭比娃娃更加灵活。

3.优点

将装饰功能从类中搬移去除,简化原有的类。

4.缺点

装饰模式的顺序非常重要。如果先加密了数据再过滤功能就会出现问题。装饰模式必须在保持装饰类独立的情况下使用。

5.类图
这里写图片描述

6.代码实现

①Doll类


namespace 装饰模式
{
    //Doll类
    public class Doll
    {
        public Doll()
        { }
        private string name;
        public Doll(string name)
        {
            this.name = name;
        }

        public virtual void show()
        {
            Console.WriteLine("装扮的{0}",name);
        }
    }

②服饰类

 //服饰类
    class Finery : Doll
    {
        protected Doll component;

        //装扮
        public void Decorate(Doll component)
        {
            this.component = component;
        }

        public override void show()
        {
            if (component != null)
            {
                component.show();
            }
        }
    }

③具体服饰类

 //具体服饰类

    class Tshirt : Finery
    {
        public override void show()
        {
            Console.Write("娃娃领衬衫");
            base.show();
        }

    }

    class Skirt : Finery
    {
        public override void show()
        {
            Console.Write("百褶裙");
            base.show();
        }

    }

    class Highheeledshoes : Finery
    {
        public override void show()
        {
            Console.Write("高跟鞋");
            base.show();
        }

    }

④装扮类


    class Program
    {
        static void Main(string[] args)
        {
            Doll xz = new Doll("小宅");
            Console.WriteLine("第一种装扮:");

            Tshirt ts = new Tshirt();
            Skirt sk = new Skirt();
            Highheeledshoes hhs = new Highheeledshoes();

            ts.Decorate(xz);
            sk.Decorate(ts);
            hhs.Decorate(sk);
            hhs.show();

            Console.Read();

        }
    }
}

总结:以上就是适配器模式和装饰模式的分享。后期会不断更新设计模式的分享。因为内容是自己的理解的,代码也是自己敲的,如果有错误欢迎大家指正。代码均可以运行,也欢迎大家去尝试。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值