单例模式 (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. 可执行Jar包调用动态链接库(DLL/SO)

    踩过了很多的坑,查了很多资料,在此记录一下,以SpringBoot项目为基础. Maven加入JNA依赖 <!-- JNA start --> <dependency> < ...

  2. substring,subsequence,charAt执行效率的不同

    package com.java.tencent; public class T_2_longestPalindrome { public String test1(String s){ long s ...

  3. Color.js 方便修改颜色值

    这并不是npm上比较活跃的clolr包的中文文档,不过它在最后提到了: The API was inspired by color-js. Manipulation functions by CSS ...

  4. 【NOI2015】【程序自己主动分析】【并查集+离散化】

    Description 在实现程序自己主动分析的过程中,经常须要判定一些约束条件能否被同一时候满足. 考虑一个约束满足问题的简化版本号:如果x1,x2,x3,-代表程序中出现的变量.给定n个形如xi= ...

  5. wmiprvse.exe 进程占CPU过高 问题解决

    wmiprvse.exe是一个系统服务的进程,你可以结束任务,进程自然消失. 禁用Windows Management Instrumentation Driver Extensions服务或者改为手 ...

  6. 【剑指Offer学习】【面试题33:把数组排成最小的数】

    题目:输入一个正整数数组,把数组里全部数字拼接起来排成一个数.打印能拼接出的全部数字中最小的一个. 样例说明: 比如输入数组{3. 32, 321},则扫描输出这3 个数字能排成的最小数字321323 ...

  7. python数据分析之:数据清理,转换,合并,重塑(一)

    DataFrame合并: merge运算是将一个或多个键将行链接起来.来看下面的这个例子: In [5]: df1=DataFrame({'key':['b','b','a','c','a','a', ...

  8. RANDOM 的用法

    random 用法 1.利用RANDOM取随机数 shell有一个环境变量RANDOM,范围是0--32767 如果我们想要产生0-25范围内的数:$(($RANDOM%26),在$(()) 是可以省 ...

  9. centos7 安装jdk9 总结

    升级jdk, 从jdk8 升级到jdk9 1:卸载jdk8: 1〉 [root@localhost conf.d]# rpm -qa|grep java javapackages-tools-3.4. ...

  10. Zookeeper 伪分布式部署

    Zookeeper 可以通过配置不同的配置文件启动 部署环境:CentOS 6.7 Zookeeper 路径: /opt/htools/zookeeper-3.4.6 操作步骤: 1 复制三份zoo. ...