满纸荒唐言,一把心酸泪,都云作者痴,谁解其中味。 技术博客 心情随笔 登录
外观模式
2025/6/24 28

导航

1前言

2外观模式之前

3外观模式

4后记

1 前言

在23种(GoF23)设计模式中,有的非常简单,外观模式就是其中之一,它对内封装复杂逻辑,对外提供简单调用,外观模式也是为调用者服务的一种设计模式。这很像政府职能部门这些年服务效率的悄然变化,比如以前注册公司需要跑多个部门,现在设立了行政服务大厅“一窗通办”。来源:https://www.wubayue.com

2 外观模式之前

外观模式之前

之前注册一家公司需要单独去市场监督管理局、公安局、税务局、社保局、公积金中心等多个职能部门,劳力费心。来源:https://www.wubayue.com

// 市场监督管理局
public class MarketSupervisionAdministration
{
    // 申领营业执照
    public void BusinessLicense()
    {
        Console.WriteLine("申领营业执照");
    }
}

// 公安局
public class PublicSecurity
{
    // 公章备案
    public void CompanyChopFiling()
    {
        Console.WriteLine("公章备案");
    }
}

// 税务局
public class Taxation
{
    // 税务登记
    public void Registration()
    {
        Console.WriteLine("税务登记");
    }
}

// 社保局
public class SocialSecurity
{
    // 社保开户
    public void Account()
    {
        Console.WriteLine("社保开户");
    }
}

// 公积金中心
public class HousingProvidentFund
{
    // 公积金开户
    public void Account()
    {
        Console.WriteLine("公积金开户");
    }
}

// 调用繁琐
static void Main(string[] args)
{
    // 市场监督管理局,申领营业执照
    MarketSupervisionAdministration marketSupervisionAdministration = new MarketSupervisionAdministration();
    marketSupervisionAdministration.BusinessLicense();
    // 公安局,公章备案
    PublicSecurity publicSecurity = new PublicSecurity();
    publicSecurity.CompanyChopFiling();
    // 税务局,税务登记
    Taxation taxation = new Taxation();
    taxation.Registration();
    // 社保局,社保开户
    SocialSecurity socialSecurity = new SocialSecurity();
    socialSecurity.Account();
    // 公积金中心,公积金开户
    HousingProvidentFund housingProvidentFund = new HousingProvidentFund();
    housingProvidentFund.Account();
}

3 外观模式

外观模式

如今注册一家公司在行政服务大厅一窗通办,30分钟搞定,省事省心。来源:https://www.wubayue.com

// 市场监督管理局
public class MarketSupervisionAdministration
{
    // 申领营业执照
    public void BusinessLicense()
    {
        Console.WriteLine("申领营业执照");
    }
}

// 公安局
public class PublicSecurity
{
    // 公章备案
    public void CompanyChopFiling()
    {
        Console.WriteLine("公章备案");
    }
}

// 税务局
public class Taxation
{
    // 税务登记
    public void Registration()
    {
        Console.WriteLine("税务登记");
    }
}

// 社保局
public class SocialSecurity
{
    // 社保开户
    public void Account()
    {
        Console.WriteLine("社保开户");
    }
}

// 公积金中心
public class HousingProvidentFund
{
    // 公积金开户
    public void Account()
    {
        Console.WriteLine("公积金开户");
    }
}

// 行政服务大厅“一窗通办”
public class AllInOne
{
    private MarketSupervisionAdministration _marketSupervisionAdministration;
    private PublicSecurity _publicSecurity;
    private Taxation _taxation;
    private SocialSecurity _socialSecurity;
    private HousingProvidentFund _housingProvidentFund;

    // 构造函数
    public AllInOne()
    {
        _marketSupervisionAdministration = new MarketSupervisionAdministration();
        _publicSecurity = new PublicSecurity();
        _taxation = new Taxation();
        _socialSecurity= new SocialSecurity();
        _housingProvidentFund = new HousingProvidentFund();
    }

    // 公司注册“一窗通办”
    public void CompanyRegistration()
    {
        // 市场监督管理局,申领营业执照
        _marketSupervisionAdministration.BusinessLicense();
        // 公安局,公章备案
        _publicSecurity.CompanyChopFiling();
        // 税务局,税务登记
        _taxation.Registration();<span style="display:none;" id="__kindeditor_bookmark_start_4__"></span>
        // 社保局,社保开户
        _socialSecurity.Account();
        // 公积金中心,公积金开户
        _housingProvidentFund.Account();
    }
}

// 调用简洁
static void Main(string[] args)
{
    // 行政服务大厅“一窗通办”
    AllInOne allInOne = new AllInOne();
    // 公司注册
    allInOne.CompanyRegistration();
} 

4 后记

在千禧年前后,记忆里都还有很多崩溃时刻,比如春节17个小时的绿皮火车从深圳返回湘西老家,无法上厕所,因为厕所里全部塞满了人;把户口迁入深圳,请假跑十几个部门,凌晨四点排一公里的长队;如面试曾遇到的香港人台湾人,对你的一脸不屑......没留意从什么时候起,这些都在悄然发生变化,与政府职能部门打交道基本都在网上完成了;面试少了,也很少遇到香港台湾人了;回老家少了,但高铁只需6小时了......中华民族正实现着伟大复兴,我们是幸运的一代人。来源:https://www.wubayue.com

赞同 0
反对 0
登录注册会员 后发表评论。
评论列表