首页 > 其他分享 >大话设计模式之装饰模式笔记

大话设计模式之装饰模式笔记

时间:2023-11-01 09:25:14浏览次数:29  
标签:show 大话 System 笔记 public ICharacter operation 设计模式 class

装饰模式的基本结构

classDiagram class Component{ <<interface>> + operation(); } class ConcreateComponent{ + operation(); } class Decrator{ - Component component; + operation(); } class ConcreateDecrator1{ + operation(); } class ConcreateDecrator2{ + operation(); } ConcreateComponent ..|> Component Decrator..|> Component Decrator <|-- ConcreateDecrator1 Decrator <|-- ConcreateDecrator2

以实现不同的穿搭风格为例

classDiagram class client{ main(String[] args) } class ICharacter{ <<interface>> + show(); } class Finery{ - Component component; + operation(); } class Persion{ - String name; + operation(); } class Suit{ + operation(); } class Tie{ + operation(); } Persion ..|> ICharacter Finery..|> ICharacter Finery <|-- Suit Finery <|-- Tie client o-- Persion Tie o-- Persion Suit o-- Persion

个人形象抽象类

public interface ICharacter {

    public void show();

}

人员实体类

public class Person implements ICharacter {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void show() {
        System.out.println("装扮的" + name);

    }

}

装饰类

public class Finery implements ICharacter {

    protected ICharacter component;

    public void decorate(ICharacter component) {
        this.component = component;
    }

    public void show() {
        if (this.component != null) {
            this.component.show();
        }
    }

}

服装类

西装

public class Suit extends Finery {

    public void show() {
        System.out.print(" 西装");
        super.show();
    }

}

领带

public class Tie extends Finery {

    public void show() {
        System.out.print(" 领带");
        super.show();
    }

}

调用

public static void main(String[] args) {

        System.out.println("**********************************************");
        System.out.println("《大话设计模式》代码样例");
        System.out.println();

        Person xc = new Person();
        xc.setName("小菜");
        System.out.println(" 第一种装扮:");

        Tie ld = new Tie(); // 生成领带实例
        ld.decorate(xc); // 领带装饰“有领带装饰的小菜”

        Suit xz = new Suit(); // 生成西装实例
        xz.decorate(ld); // 西装装饰“有领带西装装饰的小菜”

        xz.show(); // 执行形象展示

        
        System.out.println("**********************************************");

    }

标签:show,大话,System,笔记,public,ICharacter,operation,设计模式,class
From: https://www.cnblogs.com/lixiuming521125/p/17800833.html

相关文章

  • 【爬虫实战】用Python采集任意小红书笔记下的评论,爬了10000多条,含二级评论!
    目录一、爬取目标二、爬虫代码讲解2.1分析过程2.2爬虫代码三、演示视频一、爬取目标您好!我是@马哥python说,一名10年程序猿。我们继续分享Python爬虫的案例,今天爬取小红书上指定笔记("巴勒斯坦"相关笔记)下的评论数据。老规矩,先展示结果:截图1:截图2:截图3:共爬取了1w多条"......
  • xml映射文件以及动态sql笔记
     ......
  • 阅读笔记三
    第四章:注释注释的恰当用法是弥补我们在用代码表达意图是遭遇的失败。注释不能美化糟糕的代码写注释的常见动机之一是糟糕的代码的存在,带有少量注释的整洁而有表达力的代码,要比带有大量注释的零碎二复杂的代码像样得多。与其花时间编写解释你写的糟糕的代码的注释,不如花时间清......
  • 【数值分析笔记】
    第3章-函数逼近3.1内积空间3.1.1内积设$f(x),g(x)\inC[a,b],\rho(x)$是\([a,b]\)上的权函数,积分\[(f,g)=\int_a^b\rho(x)f(x)g(x)dx\]称为函数\(f(x)\)与\(g(x)\)在\([a,b]\)上的内积。\(C[a,b]\)表示在区间\([a,b]\)内连续的全体函数组成的集合。满......
  • 设计模式-中介者模式
    publicclass中介者模式{publicstaticvoidmain(String[]args){Mediatormediator=newConcreteMediator();ColleagueAcolleagueA=newColleagueA(mediator);ColleagueBcolleagueB=newColleagueB(mediator);mediator.setC......
  • 第二章读书笔记
    03运行超市抹零结账行为#输入购物金额purchase_amount=float(input("请输入购物金额:"))#计算抹零后的金额rounded_amount=round(purchase_amount)#输出抹零后的金额print("抹零后的金额:",rounded_amount)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬......
  • 大数据分析与应用笔记
    定义大数据:是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。数量(Volume)、种类(Variety)、速度(Velocity)、价值(Value)、准确性(Veracity)(1)数据清理:消除噪声和删除不一致数据。(2)数据集成:多......
  • 读书笔记chapter?2
    1#03超市抹零2bill=float(input("请输入商品的总价格"))3print("{:.0f}".format(bill))1#04成绩分差和平均值2importmath34grade1=int(input())5grade2=int(input())6grade3=int(input())7gap1=abs(grade1-grade2)8gap2=abs(grade2-grade3)......
  • 设计模式-访问者模式
    importjava.util.ArrayList;importjava.util.List;publicclass访问者结构{publicstaticvoidmain(String[]args){Visitvisit1=newVisitA();Visitvisit2=newVisitB();PersonStructurepersonStructure=newPersonStructure()......
  • [学习笔记]TypeScript查缺补漏(一):类
    @目录基础知识创建类型类的初始化类型和值JSDoc注释字段私有字段可选和非可选字段字段类型约束Getter/Setter静态成员函数重载构造函数参数属性类的实例化箭头函数this的作用域全局类和对象方法泛型泛型类泛型接口泛型函数装饰器基础知识创建类型classAbc{}类的初始化co......