开发常用设计模式

开发常用设计模式
作者:秋名
撰写时间:2020 年 7 月 7 日
技术点:为什么要学习设计模式!!!

一、为什么要学习设计模式:
	使用设计模式可以规范我们的代码
	还可以优化我们的代码结构(堆代码)
	还可以提供我们的编程水平你写的代码肯定是有一个质的提升
	为了面试(在开发中使用过哪些设计模式解决了哪类问题结合项目)
	帮助我们阅读大神写的代码或者看框架的源码
	你还停留在(实现需求为主)软件设计阶段
二、设计模式
概念:设计模式就是经过前人无数次的实践总结出来的(设计模式是一个套路)
    	设计过程中可以反复使用的可以解决特定问题的设计方法(每个设计模式只能解决一些固定的问题)
		
		我们可以把自己解决某类问题的实现思想提取出来然后再遇到类似问题还可以再使用这次的思想去解决
		那么我们就可以把自己的这套思想叫做设计模式
		你自己写的代码能不能作为设计模式呢其实是可以的只要你写的代码符合一定的规则

		创建型:工厂模式
		结构型:代理模式 装饰模式
		行为型:中介者
		设计模式一般都要遵守一些设计原则:
		
		单一职责原则:一个类应该只负责一项职责
		
		接口隔离原则:图1详解
		
		依赖倒置原则:面向接口编程    
					Person 接口
					Xiaoming实现类 实现了Person接口
					Person=newXiaoming();
		
		开闭原则:开指的是开放扩展(方法的提供者)
				闭指的是关闭修改(方法的调用者)
				B类使用到了A类的某个方法
				我对A添加了新功能B类不受影响
				
		里氏替换原则:我们使用继承的时候尽量不要重写父类的方法
				A类中有10个方法
				B类继承了A类重写了10个方法
				我们继承的目的是为了使用父类的一些资源
				
		迪米特法则:核心思想是降低类之间的耦合
				在A类中去使用了B类
				B类如果出现在A类的成员变量位置
				方法参数上面方法的返回值上面
				不推荐在局部变量使用B类型

图1:
开发常用设计模式_第1张图片
工厂模式实现多态

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 工厂模式20200707
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入笔记本品牌");
            string brand = Console.ReadLine();
            Notebook nb = GetNotebook(brand);
            nb.SayHello();
            Console.ReadKey();
        }


        /// 
        /// 简单的工厂核心 根据用户的输入创建对象赋值给父类
        /// 
        /// 
        /// 
        public static Notebook GetNotebook(string brand)
        {
            Notebook nb = null;
            switch (brand)
            {
                case "Lenovo":nb = new Lenovo();
                    break;
                case "Acer":nb = new Lenovo();
                    break;
                case "Dell":nb = new Dell();
                    break;
            }
            return nb;
        }
    }
    /// 
    /// 定义一个父类
    /// 使用abstract声明的方法,为抽象方法,抽象方法没有代码体
    /// 
    public abstract class Notebook
    {
        public abstract void SayHello();
    }

    /// 
    /// override就是派生类重写父类方法(包括虚方法、抽象方法,接口方法)时的关键字,反正你要重写方法,就使用override声明
    /// 
    public class Lenovo : Notebook
    {
        public override void SayHello()
        {
            Console.WriteLine("联想笔记本");
        }
    }

    public class Acer : Notebook
    {
        public override void SayHello()
        {
            Console.WriteLine("宏基笔记本");
        }
    }
    public class Dell : Notebook
    {
        public override void SayHello()
        {
            Console.WriteLine("戴尔笔记本");
        }
    }
}

源码地址,新手下水,多多指教

你可能感兴趣的:(.net)