惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
博客园 - Franky
Microsoft Security Blog
Microsoft Security Blog
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
罗磊的独立博客
H
Help Net Security
月光博客
月光博客
Martin Fowler
Martin Fowler
博客园 - 【当耐特】
宝玉的分享
宝玉的分享
P
Proofpoint News Feed
GbyAI
GbyAI
腾讯CDC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - androllen

Python yield 关键词 PDF 构成 桌面客户端的主要类型和技术方案 Python 压缩转义 异步删除嵌套文件夹及文件 数据结构 二叉树遍历 数据结构 线性表 JS 字符串转换为函数体 VSCode 配置内部Python项目 缺少模块ModuleNotFoundError C# 基础知识 算法-数列 算法-排序算法 C# 设计模式-简单工厂模式 C# Utils .Net 异步与同步 WPF StreamGeometry Vue 打开窗口输出文件路径 CSS Flexbox layout 2 CSS Flexbox layout 1
C# 设计模式
androllen · 2025-03-02 · via 博客园 - androllen

设计模式

解耦 重用

设计模式原则:

  • 开闭原则 OPEN CLOSE PRINCIPLE

    开闭原则是面向对象设计中最基础的设计原则
    对扩展开放,对修改关闭
    
  • 依赖倒置原则
    具体实现应该依赖于抽象
    高模块不应该依赖低模块,都依赖抽象

    public interface IDriver{
      public void drive(ICar car);
    }
    
    public class Tester : IDriver{
      public void drive(ICar car){
        car.run();
      }
    }
    
    public class User : IDriver{
      public void drive(ICar car){
        car.run();
      }
    }
    
    public interface ICar{
      public void run();
    }
    
    public class Benz : ICar{
      public void run(){
        System.out.println("奔驰骑车开始运行....");
      }
    }
    
    public class BMW : ICar{
      public void run(){
        System.out.println("宝马骑车开始运行....");
      }
    }
    public class Client{
      public static void main(String[] args){
        IDriver tester = new Driver();
        ICar benz = new Benz();
        ICar bmw = new BMW();
    
        tester.drive(benz);
        tester.drive(bmw);
      }
    }
    
  • 里氏代换原则

  • 接口隔离原则

  • 最少知道原则

  • 合成复用原则

常用的设计模式

单例模式

简单工厂模式

public interface ISample
{
    void Say();
}
public class SampleA : ISample
{
    public void Say()
    {
        Debug.WriteLine("this is a");
    }
}
public class SampleB : ISample
{
    public void Say()
    {
        Debug.WriteLine("this is b");
    }
}
public class Factory
{
    public static ISample Run(int which)
    {
        ISample sample = null;
        if (which == 1)
            sample = new SampleA();
        else if (which == 2)
            sample = new SampleB();

        return sample;
    }
}

ISample _sa = Factory.Run(1)
_sa.Say()

工厂模式

抽象工厂模式

观察者模式