# Head-First-Design-Patterns-master **Repository Path**: jerryy00/Head-First-Design-Patterns-master ## Basic Information - **Project Name**: Head-First-Design-Patterns-master - **Description**: 主要涉及设计模式相关代码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-08 - **Last Updated**: 2025-07-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: 设计模式 ## README # Head First Design Patterns (2020 2nd Edition) 有关本书的其他链接可在wickedlysmart.com的书籍页面上找到。 除以下示例外,所有代码示例均可在 Java 5 或更高版本上运行: headfirst.designpatterns.observer.swing.SwingObserverExample headfirst.designpatterns.command.simpleremoteWL.RemoteControlTest headfirst.designpatterns.command.remoteWL.RemoteLoader ## 第 1 章 - 策略模式 java -cp ./classes headfirst.designpatterns.strategy.MiniDuckSimulator java -cp ./classes headfirst.designpatterns.strategy.MiniDuckSimulator1 照相机需要有分享策略 基础功能,由抽象类实现:拍照、编辑、保存 定义策略模式接口 分享策略接口策略如下:文本、社交媒体、发邮件继承分享策略的接口并进行具体实现 ## 第 2 章 - 观察者模式 java -cp ./classes headfirst.designpatterns.observer.weather.WeatherStation java -cp ./classes headfirst.designpatterns.observer.weather.WeatherStationHeatIndex java -cp ./classes headfirst.designpatterns.observer.weatherobservable.WeatherStation java -cp ./classes headfirst.designpatterns.observer.weatherobservable.WeatherStationHeatIndex java -cp ./classes headfirst.designpatterns.observer.swing.SwingObserverExample 要运行 Swing 示例,请使用 Java 8 或更高版本。查看源文件中的旧版(Java 5)代码,你可以通过注释掉新的 lambda 代码并取消注释旧代码来运行旧版代码。 ## 第 3 章 - 装饰器模式 java -cp ./classes headfirst.designpatterns.decorator.starbuzz.StarbuzzCoffee 对于 InputTest 示例,请确保在运行 headfirst.designpatterns.decorator.io.InputTest 的目录(通常是你的 src / 目录)中有 test.txt 文件。 java -cp ./classes headfirst.designpatterns.decorator.io.InputTest ## 第 4 章 - 工厂模式 简单工厂 java -cp ./classes headfirst.designpatterns.factory.pizzas.PizzaTestDrive 工厂方法 java -cp ./classes headfirst.designpatterns.factory.pizzafm.PizzaTestDrive 抽象工厂 java -cp ./classes headfirst.designpatterns.factory.pizzaaf.PizzaTestDrive ## 第 5 章 - 单例模式 java -cp ./classes headfirst.designpatterns.singleton.chocolate.ChocolateController java -cp ./classes headfirst.designpatterns.singleton.stat.SingletonClient java -cp ./classes headfirst.designpatterns.singleton.dcl.SingletonClient java -cp ./classes headfirst.designpatterns.singleton.subclass.SingletonTestDrive ## 第 6 章 - 命令模式 java -cp ./classes headfirst.designpatterns.command.simpleremote.RemoteControlTest java -cp ./classes headfirst.designpatterns.command.remote.RemoteLoader java -cp ./classes headfirst.designpatterns.command.undo.RemoteLoader java -cp ./classes headfirst.designpatterns.command.party.RemoteLoader 要运行带有 lambda 表达式的示例,请确保使用 Java 8 或更高版本。 java -cp ./classes headfirst.designpatterns.command.simpleremoteWL.RemoteControlTest java -cp ./classes headfirst.designpatterns.command.remoteWL.RemoteLoader ## 第 7 章 - 适配器和外观模式 java -cp ./classes headfirst.designpatterns.adapter.ducks.DuckTestDrive java -cp ./classes headfirst.designpatterns.adapter.ducks.TurkeyTestDrive java -cp ./classes headfirst.designpatterns.adapter.iterenum.EI one two three java -cp ./classes headfirst.designpatterns.adapter.iterenum.IteratorEnumerationTestDrive one two three four five six java -cp ./classes headfirst.designpatterns.adapter.iterenum.EnumerationIteratorTestDrive seven eight nine ten eleven twelve java -cp ./classes headfirst.designpatterns.facade.hometheater.HomeTheaterTestDrive ## 第 8 章 - 模板方法模式 java -cp ./classes headfirst.designpatterns.templatemethod.simplebarista.Barista java -cp ./classes headfirst.designpatterns.templatemethod.barista.BeverageTestDrive java -cp ./classes headfirst.designpatterns.templatemethod.sort.DuckSortTestDrive java -cp ./classes headfirst.designpatterns.templatemethod.frame.MyFrame ## 第 9 章 - 迭代器和组合模式 java -cp ./classes headfirst.designpatterns.iterator.dinermerger.MenuTestDrive java -cp ./classes headfirst.designpatterns.iterator.dinermergeri.MenuTestDrive java -cp ./classes headfirst.designpatterns.iterator.dinermergercafe.MenuTestDrive java -cp ./classes headfirst.designpatterns.composite.menu.MenuTestDrive java -cp ./classes headfirst.designpatterns.composite.menuiterator.MenuTestDrive ## 第 10 章 - 状态模式 java -cp ./classes headfirst.designpatterns.state.gumball.GumballMachineTestDrive java -cp ./classes headfirst.designpatterns.state.gumballstate.GumballMachineTestDrive java -cp ./classes headfirst.designpatterns.state.gumballstatewinner.GumballMachineTestDrive ## 第 11 章 - 代理模式 java -cp ./classes headfirst.designpatterns.proxy.javaproxy.MatchMakingTestDrive java -cp ./classes headfirst.designpatterns.proxy.virtualproxy.ImageProxyTestDrive 要运行糖果机代理示例: 在每台机器上运行 headfirst.designpatterns.proxy.gumball.GumballMachineTestDrive <糖果数量> 然后运行 headfirst.designpatterns.proxy.gumball.GumballMonitorTestDrive 进行监控 你需要编辑 GumballMonitorTestDrive 以指向正确的机器 如果你在同一台机器上运行所有程序,可以使用localhost作为主机 ## 第 12 章 - 组合模式 为什么是鸭子? java -cp ./classes headfirst.designpatterns.combining.ducks.DuckSimulator java -cp ./classes headfirst.designpatterns.combining.adapter.DuckSimulator java -cp ./classes headfirst.designpatterns.combining.decorator.DuckSimulator java -cp ./classes headfirst.designpatterns.combining.factory.DuckSimulator java -cp ./classes headfirst.designpatterns.combining.composite.DuckSimulator java -cp ./classes headfirst.designpatterns.combining.observer.DuckSimulator MVC java -cp ./classes headfirst.designpatterns.combined.djview.DJTestDrive java -cp ./classes headfirst.designpatterns.combined.djview.HeartTestDrive