系列文章目录
第五章设计模式(下)
目录
前言
设计模式,又称为软件设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
学习设计模式可以提高程序员的思维能力、编程能力和设计能力,使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。
一、🌍装饰(Decorator)模式是什么?🌍
在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。
二、🌍装饰(Decorator)模式的优缺点🌍
优点:
1)采用装饰模式扩展对象的功能比采用继承方式更加灵活;
2)可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。
缺点:
1)装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。
三、🌍装饰(Decorator)模式的结构🌍
装饰模式主要包含以下角色:
1)抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。
2)具体构件(Concrete Component)角色:实现抽象构件,通过装饰角色为其添加一些职责。
3)抽象装饰(Decorator)角色:继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。
4)具体装饰(Concrete Decorator)角色:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。
四、🌍实例演示🌍
1.🌕实例概述🌕
抽象构件角色:Gender抽象类
具体构件角色:Man类或Woman类
抽象装饰角色:Deractor抽象类,依赖于Gender类,是为了后面对gender的继承类进行操作
具体装饰角色:T_shirts类,Jacket类,Jeen类···(这里可以自己去扩写很多类)
2.🌕代码演示🌕
代码如下(示例):
package Decorate; public class ClothDerector { public static void main(String[] args) { // 生成了一个人 Man man = new Man(); // 选择牛仔上衣 derector jacket = new Jacket(man); jacket.dress(); // 选择牛仔裤 Jeen jeen = new Jeen(jacket); jeen.dress(); } } //抽象构件 abstract class Gender { public abstract void dress(); } //具体构件 class Man extends Gender{ public void dress() { System.out.println("一个男人"); } } class Woman extends Gender{ public void dress() { System.out.println("一个女人"); } } //抽象装饰 abstract class derector extends Gender { Gender gender; public derector(Gender gender) { this.gender = gender; } } //具体装饰 class T_shirts extends derector { public T_shirts(Gender gender) { super(gender); // TODO Auto-generated constructor stub } @Override public void dress() { // TODO Auto-generated method stub System.out.println("T_shirts"); } } class Jacket extends derector { public Jacket(Gender gender) { super(gender); // TODO Auto-generated constructor stub } @Override public void dress() { // TODO Auto-generated method stub System.out.println("Jacket"); } } class Jeen extends derector { public Jeen(Gender gender) { super(gender); // TODO Auto-generated constructor stub } @Override public void dress() { // TODO Auto-generated method stub System.out.println("Jeen"); } }
3.🌕实验结果🌕
Jacket
Jeen
总结
以上就是今天要讲的内容,本文仅仅简单介绍了结构模式下装饰模式的定义,优缺点以及其的模式结构,并通过实例演示,进一步反应了在一定需求条件下,装饰模式的优点。