设计模式精读
来源:互联网 发布:在职软件工程硕士叫停 编辑:程序博客网 时间:2024/06/03 09:22
外观模式: 从原有系统中抽出一些接口(也可以自己扩展)形成一个新的接口(外观类), 供客户使用 减少了客户与原系统内部的耦合,只需要与外观类接口发生耦合即可
适配器模式:创建一个拥有所需接口的新类,然后包装原来类的方法,达到适配的效果
桥接模式:抽象变化 实现也变化 找到变化点并进行封装 少用继承多用组合防止类爆炸 将实现部分封装在一个抽象类中 在被实现的抽象部分积累中包含一个实现部分基类的句柄
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace BridgePattern{ interface Drawing { void DrawLine(); void DrawCircle(); } abstract class Shape { Drawing IDraw; abstract public void Draw(); public void SetInterface(Drawing d) { IDraw = d; } public void DrawLine() { IDraw.DrawLine(); } public void DrawCircle() { IDraw.DrawCircle(); } } class Rectangle : Shape { public override void Draw() { DrawLine(); } } class Circle:Shape { public override void Draw() { DrawCircle(); } } class DrawingA:Drawing { public void DrawLine() { MethodA.DrawLineA(); } public void DrawCircle() { MethodA.DrawCircleA(); } } class DrawingB : Drawing { public void DrawLine() { MethodB.DrawLineB(); } public void DrawCircle() { MethodB.DrawCircleB(); } } static class MethodA { public static void DrawLineA() { Console.WriteLine("DrawLineA"); } public static void DrawCircleA() { Console.WriteLine("DrawCircleA"); } } static class MethodB { public static void DrawLineB() { Console.WriteLine("DrawLineB"); } public static void DrawCircleB() { Console.WriteLine("DrawCircleB"); } } class Program { static void Main(string[] args) { Shape s = new Rectangle(); s.SetInterface(new DrawingA()); s.Draw(); Console.Read(); } }}
抽象工厂模式:是要提供一个创建一系列相关或相互依赖对象的接口,而不需要指定它们具体的类
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace AbstractFactoryPattern{ abstract class AbstractProductA { public abstract void Show(); } class ProductA1:AbstractProductA { public override void Show() { Console.WriteLine("ProductA1"); } } class ProductA2 : AbstractProductA { public override void Show() { Console.WriteLine("ProductA2"); } } abstract class AbstractProductB { public abstract void Show(); } class ProductB1 : AbstractProductB { public override void Show() { Console.WriteLine("ProductB1"); } } class ProductB2 : AbstractProductB { public override void Show() { Console.WriteLine("ProductB2"); } } abstract class AbstractFactory { public abstract AbstractProductA CreateProuctA(); public abstract AbstractProductB CreateProuctB(); } class ProductFactory1:AbstractFactory { public override AbstractProductA CreateProuctA() { return new ProductA1(); } public override AbstractProductB CreateProuctB() { return new ProductB1(); } } class ProductFactory2 : AbstractFactory { public override AbstractProductA CreateProuctA() { return new ProductA2(); } public override AbstractProductB CreateProuctB() { return new ProductB2(); } } class Program { static void Main(string[] args) { AbstractFactory af = new ProductFactory1(); AbstractProductA ap = af.CreateProuctA(); ap.Show(); Console.Read(); } }}
策略模式:使用不同的业务规则或者算法 讲算法的选择和实现分离 让客户可以基于场景做出选择
装饰模式 为一个对象现在有的功能动态添加附加功能的一个方法 被装饰和装饰类都继承同一个抽象类 装饰类存有被装饰类的引用,对功能进行重新包装
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace NewDecoratorPattern{ abstract class Component { public abstract void Operation(); } class ConcreteComponent : Component { public override void Operation() { Console.WriteLine("具体组件方法"); } } abstract class Decorator:Component { private Component component; public void SetDecorator(Component com) { this.component = com; } public override void Operation() { component.Operation(); } } class DecoratorA:Decorator { public override void Operation() { base.Operation(); Console.WriteLine("Decorator A"); } } class DecoratorB: Decorator { public override void Operation() { base.Operation(); Console.WriteLine("Decorator B"); } } class Program { static void Main(string[] args) { ConcreteComponent c = new ConcreteComponent(); DecoratorA ad = new DecoratorA(); ad.SetDecorator(c); ad.Operation(); Console.Read(); } }}
单例模式:类只存在一个实例 多线程需要进行检测
0 0
- 设计模式精读
- 精读-包的设计原则
- 802.11协议精读4:PCF工作模式
- 802.11协议精读10:节能模式(PSM)
- 802.11协议精读11:节能模式(APSD,PSMP,SMPS)
- 802.11协议精读10:节能模式(PSM)
- 目标导向和UCD以用户为中心的设计-精读
- 设计原本:计算机科学巨匠Frederick P.Brooks的思考(评注版)(Design of Design名作精读)
- “大牛”不可缺少的三种文献精读思维模式
- 802.11协议精读9:初探节能模式(PS mode)以及缓存机制
- 802.11协议精读9:初探节能模式(PS mode)与缓存机制
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式~~~~~~~~~~
- ajax完整知识总结
- 二分查找+基础应用
- C++操作mysql方法总结(2)
- Appium——驱动和常用功能的封装
- Linux 忘记root密码后进入单用户模式修改
- 设计模式精读
- c#设置系统参数,鼠标速度,滚轮速度为例
- 第六十一篇:移植不带系统应用程序到有ARM-LINUX系统的S32V234上
- Java之对象的创建、访问
- 虚拟机 vmware 自动挂起
- PHP生成简单验证码(例子)
- Android开发:视频播放横竖屏切换回忆笔记
- ubuntu无法打开terminal
- 第44个python程序:类的继承(隐式)