[学习笔记:设计模式] 9_外观模式

定义:外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个统一的入口,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。


外观模式包含如下角色:

Facade(外观角色):负责子系统的的封装调用
SubSystem(子系统角色):具体的子系统,实现由外观模式Facade对象来调用的具体任务


举例
去水果店买水果

- 子系统角色

//抽象系统,派生出三个子系统
abstract class Fruit
    {
        public abstract void BuyFruit();
    }

    class Apple : Fruit
    {
        public override void BuyFruit()
        {
            Console.WriteLine("买苹果");
        }
    }

    class Orange : Fruit
    {
        public override void BuyFruit()
        {
            Console.WriteLine("买橙子");
        }
    }

    class Peach : Fruit
    {
        public override void BuyFruit()
        {
            Console.WriteLine("买桃子");
        }
    }

- 外观角色

class FruitShop
    {
        private Apple apple = new Apple();
        private Orange orange = new Orange();
        private Peach peach = new Peach();

        public void BuyApple()
        {
            apple.BuyFruit();
        }

        public void BuyOrange()
        {
            orange.BuyFruit();
        }
        
        public void BuyPeach()
        {
            peach.BuyFruit();
        }
        
        public void BuyAllFruit()
        {
            apple.BuyFruit();
            orange.BuyFruit();
            peach.BuyFruit();
        }
    }

- 客户类

class Program
    {
        static void Main(string[] args)
        {
            FruitShop fruitShop = new FruitShop();
            fruitShop.BuyApple();
            fruitShop.BuyOrange();
            fruitShop.BuyPeach();
            fruitShop.BuyAllFruit();
        }
        
    }

总结:每个子系统都负责一个独立的功能模块,可以是同一个基类的子类,也可以不是,外观类则是创建了每个子系统类的对象,在自己定义的方法中调用子系统的方法,进行封装使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值