首页 > 其他分享 >大话设计模式

大话设计模式

时间:2022-10-01 19:55:06浏览次数:39  
标签:Information CalEngine Render 大话 Print new 设计模式 public

本文用简洁的方法,总结常用的设计模式

设计模式主要分成三大类,每一类都有一些具体模式,总结如下

  • 创建型模式
    • 抽象工厂模式
    • 生成器模式
    • 原型模式
    • 单例模式
  • 结构型模式
  • 行为模式

抽象工厂模式

 Factory Method is a creational design pattern that provides an interface for creating objects in a superclass, but allows subclasses to alter the type of objects that will be created.

抽象工厂模式主要是由父类指定一个构造方法,子类实现,而非直接调用构造方法

这个是一个不使用工厂模式的例子:

    public class Information
    {
        public string Name { get; set; }
    }
    public class CalInfo : Information
    {
        public string Description { get; set; }
    }

    public class ImageInfo : Information
    {
        public int Width { get; set; }
        public int Height { get; set; }
    }

    public class CalEngine
    {
        public void Print(CalInfo info)
        {
            Console.WriteLine("CalEngine Print" + info.ToString());
        }
    }

    public class Render
    {
        public void Print(ImageInfo info)
        {
            Console.WriteLine("Render Print" + info.ToString());
        }
    }

 

可以看到,Render和CalEngine都会使用特定的Information,Render使用ImageInfo作为参数,而CalEngine使用CalInfo作为参数

在具体使用的时候,要针对特定的情况,构造一个合适的对象传递给Print方法

        static void Main(string[] args)
        {
            var calEngine = new CalEngine();
            var render = new Render();

            // Usage1, now need print CalEngine
            calEngine.Print(new CalInfo());

            // Usage2, now need print Render
            render.Print(new ImageInfo());

        }

 

工厂模式推荐将构造实例的地方单独放在子类中实现

修改如下:

    public interface ICreator
    {
        Information Create();
    }
    public class CalEngine : IPrint, ICreator
    {
        public Information Create()
        {
            return new CalInfo();
        }

        public void Print()
        {
            Console.WriteLine("CalEngine Print" + Create().ToString());
        }
    }

    public class Render : IPrint, ICreator
    {
        public Information Create()
        {
            return new ImageInfo();
        }

        public void Print()
        {
            Console.WriteLine("Render Print" + Create().ToString());
        }
    }

 

现在调用者无需根据具体情况,构造特定类型的实例

        static void Main(string[] args)
        {
            var calEngine = new CalEngine();
            var render = new Render();

            calEngine.Print();
            render.Print();
        }

 

标签:Information,CalEngine,Render,大话,Print,new,设计模式,public
From: https://www.cnblogs.com/chenyingzuo/p/16747665.html

相关文章

  • 单例设计模式(懒汉式or饿汉式)
    1什么是设计模式静态方法和属性的经典使用设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱,......
  • 设计模式 —— 单例模式
    6单例模式6.1单例模式概述SingletonPatter:确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。单例模式有3个要点:该类只能有一个实例该类必须自......
  • 设计模式---工厂方法模式
    简述类型:创建型目的:实现对客户端中对象的平替。我们借以下案例来说说如何使用工厂方法模式平替对象。优化案例最初版publicinterfaceOS{publicvoids......
  • 设计模式之访问者模式
    大多数情况下你不需要访问者模式,但当一旦需要访问者模式时,那就是真的需要它了,这是设计模式创始人的原话。可以看出应用场景比较少,但需要它的时候是不可或缺的,这篇文章就开......
  • 初识设计模式 - 适配器模式
    适配器在生活中经常见到,如手机、笔记本电脑的电源适配器,USB转接头都是常见的适配器。在设计模式当中,适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。在类......
  • 【转载】模式——使用MVVM设计模式的WPF程序开发
    原文:模式-具有模型-视图-视图模型设计模式|的WPF应用微软学习(microsoft.com)翻译:https://blog.csdn.net/weixin_37537723/article/details/106916294说明本文是笔......
  • 设计模式的七大原则
    设计模式之七大编程原则单一职责原则接口隔离原则依赖倒转原则里氏替换原则迪米特法则合成复用原则笔记总结来源于B站:B站尚硅谷——Java设计模式一、单一职责原......
  • 【设计模式】29.结构型模式-装饰模式(Decorator)
    一、描述装饰模式能够在不改变原来对象结构和功能的前提下,动态的给对象增加新的功能,相比于使用子类扩展的方式,装饰模式更加的灵活。角色(1)抽象构件类:为具体构件类和装饰......
  • 行为型设计模式之观察者模式
    观察者模式观察者模式,又叫发布-订阅模式,它属于行为型模式。它是定义一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听,使得每当主题对象状态变化时,所有依赖于......
  • 对《Head First设计模式》的更多赞誉
    ​​软件方法(下)分析和设计第8章连载[20210723更新]>>​​​​ErichGamma:我把它带到健身房-对《HeadFirst设计模式》的赞誉​​​​技术书籍也香艳-《HeadFirst设计模式》......