设计模式几个原则的应用--控制开关(C#)
设计可以控制开关的程序,可以控制种类不同的物件,便于增加和复用。
TV 和 Light类可以是抽象类或者接口
第一个类:开关接口类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp4
{interface IsSwitchable{void TurnOff();void Lighting();void TurnOn();//开关接口}}
接口类包含三个函数:开、关、亮
第二、三个类:抽象函数灯、电视类(灯和电视可以派生出各种类型的灯、电视)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp4
{abstract class Light : IsSwitchable{public abstract void TurnOff();public abstract void TurnOn();public abstract void Lighting();//抽象类Light}}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp4
{abstract class Tv : IsSwitchable{public abstract void Lighting();public abstract void TurnOff();public abstract void TurnOn();//抽象类Tv}}
这两个抽象类只声明,并不具体实现,由他们的子类来实现。
第四、五个类:具体灯、电视类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp4
{class TubeLight : Light{public override void TurnOn(){Console.WriteLine("打开");}public override void Lighting(){Console.WriteLine("灯亮了");}public override void TurnOff(){Console.WriteLine("关闭");}}}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp4
{class BulbLight : Light{public override void TurnOff(){Console.WriteLine("关闭");}public override void TurnOn(){Console.WriteLine("打开");}public override void Lighting(){Console.WriteLine("灯亮了");}}}
最后一个类:开关控制类(成员是接口对象)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp4
{class ToggleSwitch{protected IsSwitchable Ilight;public ToggleSwitch(IsSwitchable ilight){this.Ilight = ilight;}public void makeLight(){this.Ilight.TurnOn();this.Ilight.Lighting();this.Ilight.TurnOff();}//@开关类
//这里也可以写选择灯是开是关的函数}}
然后可以测试一下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp4
{class Program{static void Main(string[] args){IsSwitchable Tube = new TubeLight();Console.WriteLine("创建一个灯管");IsSwitchable Bulb = new BulbLight();Console.WriteLine("创建一个灯泡");ToggleSwitch TogOne = new ToggleSwitch(Tube);TogOne.makeLight();}}
}
UML图:
设计模式几个原则的应用--控制开关(C#)相关推荐
- 设计一个矩形类rectangle_万字长文带你捋清六种设计模式的设计原则(建议收藏)...
对于设计模式,自己很早之前就看了好多本设计模式书籍,其中一些还看了好几遍,也一直希望自己能在编码的时候把这些设计模式用上去.可是,在日常的打码中,用的最多的就是单例,其次是观察者和建造者模式 ( bu ...
- Java设计模式-七大设计原则
Java设计模式 设计模式七大原则 设计模式的目的 编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好 代码 ...
- 设计模式 分类和原则
为什么80%的码农都做不了架构师?>>> 设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型 ...
- 设计模式之SOLID原则再回首
本科阶段学过设计模式,那时对设计模式的五大原则--SOLID原则的概念与理解还是比较模糊,此时过去了2年时间,在学习<高级软件工程>课程中老师又提到了设计模式,课程中还详细讨论了五 ...
- Java 23种设计模式案例:原则及分类
2019独角兽企业重金招聘Python工程师标准>>> 一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模 ...
- 设计模式_01_单一原则
设计模式_01_单一原则 package designPatternOf_01; /*** 单一原则示例:动物呼吸* 引入的问题:鱼不吸空气,吸水*/ public class SinglePrinc ...
- 【设计模式 00】设计模式的六大原则
设计模式的六大原则 参考: 设计模式六大原则 1. 单一职责原则 一个类只负责一个明确的功能 优点: 降低类的复杂度,提高代码可读性和可维护性 降低变更时对其他功能的影响 2. 里氏替换原则 **原则 ...
- 设计模式 - 七大设计原则(一)
设计模式 - 七大设计原则(一) 概述 简单介绍一下七大设计原则: 开闭原则:是所有面向对象设计的核心,对扩展开放,对修改关闭 依赖倒置原则:针对接口编程,依赖于抽象而不依赖于具体 单一职责原则:一个 ...
- 设计模式 接口隔离原则
设计模式 接口隔离原则 用类图说明 然后书写代码清单 public interface IPettyGirl{// 面孔public void goodLooking();// 身材public vo ...
最新文章
- Linux中的文件系统和磁盘管理
- button按钮无法提交表单问题发现与解决
- 卷积神经网络(CNN)在无人驾驶中的应用
- CentOS 初体验四: 阿里云服务器开启8080端口
- Python递归实现汉诺塔
- 音视频技术开发周刊 | 234
- 多行字符串的表示方式
- CSRF简单介绍及利用方法-跨站请求伪造
- Every Woman is beautiful
- [机器学习-回归算法]Sklearn之线性回归实战
- 初学opengl的一些知识整理-1
- 用java写猜拳游戏,Java写人机猜拳游戏(可扩展其他游戏或其他参与者)
- leetcode 367 Valid Perfect Square
- 【codeforces】【01字符串匹配】Equalize【Manthan, Codefest 18 (rated, Div. 1 + Div. 2)】
- 生成1000个不同的随机数
- At least one JAR was scanned for TLDs yet contained no TLDs.问题解决方式
- RIP、OSPF、BGP、动态路由选路协议、自治域AS
- 这些年我踩过的`Mybatis`代码生成的坑
- 【NLP】文本分类TorchText实战-AG_NEWS 新闻主题分类任务(PyTorch版)
- Debezium报错处理系列十一:Data row is smaller than a column index, internal schema representation is probabl