单例模式 (Singleton)

单例讲的是当一个类被初次调用时,会产生一个类的实例, 而这个类的实例会贯穿程序的整个生命周期。单例提供了一个全局、唯一的实例。
步骤:1.让类自己创建一个实例;2.提供一个全局访问这个实例的方法;3.声明这个类的构造为私有,防止其他对象创建一个新实例。
C#示例:

public   class Singleton

{

private static Singleton instance;

private Singleton()

{

}

public static Singleton CreateInstance()

{

if (instance == null)

{

instance = new Singleton();

}

return instance;

}

}

}

适配器模式  (Adapter)
适配器讲的是当现有已存在的类不符合新环境的接口时,需要复用现有代码。适配器模式有类适配器和对象适配器。
类适配器
用包装类(所谓的适配器)继承新环境的接口和旧类,在类适配器中实现现有接口,实现时直接在接口方法里调用或者包装旧类的方法。
C#示例:
public class OldPower
{
     public void GetPower220v()
     {
          Console.WriteLine("220v power.");
     }
}

public interface IPower
{
void GetPower();
}

public class Adapter :  IPower, OldPower
{
     public void GetPower()
     {
          return base.GetPower220v();
     }
}

//Use
public class Program
{
     void Main(string[] Args)
     {
          IPower p = new Adapter();
          p.GetPower();         
     }
}

对象适配器
用包装类(适配器)继承新环境的接口,在类适配器中实例化旧类,实现接口时在接口方法里调用或者包装已经实例化的旧类对象的方法。
C#示例:
public class OldPower
{
     public void GetPower220v()
     {
     ///
     }
}

public interface IPower
{
void GetPower();
}

public class ObjectAdapter : IPower
{
     private Power _p = new Power();
    
     public void GetPower()
     {
          if (null != _p)
          {
               _p.GetPower220v();
          }
     }
}

//Use
public class Program
{
     void Main(string[] Args)
     {
          IPower p = new Adapter();
          p.GetPower();         
     }
}

平时建议尽量用对象适配器而不是类适配器, 因为类适配器的多继承可能引进一些不必要的东西。对象适配器更加松耦合。

C# 架构模式的更多相关文章

  1. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  2. Hibernate(1)——数据访问层的架构模式

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 数据库的概念.逻辑.数据模型概念 应用程序的分层体系结构发展 MVC设计模式与四层结构的对应关系 持久层的设 ...

  3. Android 四大组件 与 MVC 架构模式

    作为一个刚从JAVA转过来的Android程序员总会思考android MVC是什么样的? 首先,我们必须得说Android追寻着MVC架构,那就得先说一下MVC是个啥东西! 总体而来说MVC不能说是 ...

  4. iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构

    本文由CocoaChina译者lynulzy(社区ID)翻译 作者:Bohdan Orlov 原文:iOS Architecture Patterns 在 iOS 中使用 MVC 架构感觉很奇怪? 迁 ...

  5. 《企业应用架构模式》(POEAA)读书笔记

    原文地址:<企业应用架构模式>(POEAA)读书笔记作者:邹齐龙(技术-5013 什么是架构 Rolph Johnson认为:架构是一种主观上的东西,是专家级的项目开发人员对系统设计的一些 ...

  6. 面向对象架构模式之:领域模型(Domain Model)

    一:面向对象设计中最简单的部分与最难的部分 如果说事务脚本是 面向过程 的,那么领域模型就是 面向对象 的.面向对象的一个很重要的点就是:“把事情交给最适合的类去做”,即:“你得在一个个领域类之间跳转 ...

  7. iOS 架构模式-MVVM

    iOS 架构模式-MVVM MVVM Model-View-ViewModelMVVM 其实是MVC的进化版,他将业务逻辑从VC中解耦到ViewModel,实现VC的瘦身. 做一个简单的登录判断: 创 ...

  8. iOS - MVP 架构模式

    1.MVP 从字面意思来理解,MVP 即 Modal View Presenter(模型 视图 协调器),MVP 实现了 Cocoa 的 MVC 的愿景.MVP 的协调器 Presenter 并没有对 ...

  9. Android IOS WebRTC 音视频开发总结(二二)-- 多人视频架构模式

    本文主要介绍多人视频会议服务端架构方式,文章来自博客园RTC.Blacker,转载必须说明出处,欢迎关注个人微信公众号blacker,更多详见www.rtc.help 随着移动互联网的迅速发展,很多公 ...

  10. 浅谈MVC、MVP、MVVM架构模式的区别和联系

    MVC.MVP.MVVM这些模式是为了解决开发过程中的实际问题而提出来的,目前作为主流的几种架构模式而被广泛使用. 一.MVC(Model-View-Controller) MVC是比较直观的架构模式 ...

随机推荐

  1. easyNetq demo

    本demo包含一个类库,2个console程序 1.新建类库  MQHelper,控制台程序  consumer和proc ,控制台程序引用MQHelper 2.使用nuget安装easynwtq 和 ...

  2. java jdbc oracle ORA-01795: 列表中的最大表达式数为 1000

    在操作SQL中存在In的数量如果超过1000条会提示   ORA-01795: 列表中的最大表达式数为 1000 归纳有几种方式出现的: 第一种是:我在上一个 [jdbc 同时执行 查询和删除操]作中 ...

  3. Objective-C中NSString转NSNumber的方法

    本文转载至 http://www.linuxidc.com/Linux/2013-02/78866.htm 在Objective-C中,以数字格式组成的字符串经常需要转换为NSNumber对象后再使用 ...

  4. T-SQL简单查询语句(模糊查询)

    T-SQL简单查询语句 简单查询: 1.最简单查询(查所有数据) select * from 表名: 注:* 代表所有列 select * from info 2.查询指定列 select code, ...

  5. 九度OJ 1021:统计字符 (基础题)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5418 解决:3146 题目描述:     统计一个给定字符串中指定的字符出现的次数. 输入:     测试输入包含若干测试用例,每个测试用 ...

  6. ios Symbol(s) not found for architecture arm64总结 含隐藏错误cocoapods

    一.通用 报错:Desktop/project/ASDF/WEIXIN/libWeChatSDK.a (3 slices) Undefinedsymbols for architecture arm6 ...

  7. 远程服务器上的weblogic项目管理(三)常用指令及常见错误

    weblogic的管理流程已在前两节整理完毕,接下来汇总一下linux环境下的weblogic管理常用指令及常见错误: 常用指令: ./startWebLogic.sh 启动weblogic ./st ...

  8. Java使用到的常用类总结

    基本类型 常用:int.long.double.boolean. 不常用:byte.float.char.short

  9. spring-boot4代码

    App.java package com.kfit; import org.springframework.boot.SpringApplication; import org.springframe ...

  10. 《CSS权威指南(第三版)》---第三章 结构和层叠

    这章主要讲的是当某个对象被选择器多次提取使用样式之后的一些冲突性解决方案: 1.特殊性:指的是当多个效果作用的时候的最终选择: 这个规则用0,0,0,0来比较.其中:内联式是1,0,0,0  ID选择 ...