提交 ed2609b8 编写于 作者: C chenjianqiang

增加适配器模式 ☆*: .。. o(≧▽≦)o .。.:*☆

上级 46d3e4c3
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="e43e9168-5945-4f45-b4c2-1b6410d1eef8" name="Changes" comment="增加策略模式案例&#10;Signed-off-by: chenjianqiang &lt;wushanxi@gmail.com&gt;">
<change beforePath="$PROJECT_DIR$/src/com/pattern/PatternApplication.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/pattern/PatternApplication.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/pattern/ProxyPattern/ProxyMain.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/pattern/ProxyPattern/ProxyMain.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/pattern/ProxyPattern/materials/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/pattern/ProxyPattern/materials/README.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/pattern/ProxyPattern/materials/po/YellowBullHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/pattern/ProxyPattern/materials/po/YellowBullHandler.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="CodeInsightWorkspaceSettings">
<option name="optimizeImportsOnTheFly" value="true" />
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="package-info" />
<option value="Interface" />
<option value="Class" />
</list>
</option>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="ProjectId" id="1zOe73GcNcKVHdZbMKVNmxcnwqc" />
<component name="ProjectLevelVcsManager">
<ConfirmationsSetting value="1" id="Add" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
<flattenPackages />
<showMembers />
<showModules />
<showLibraryContents />
<hideEmptyPackages />
<abbreviatePackageNames />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
</navigator>
<panes>
<pane id="Scope" />
<pane id="PackagesPane" />
<pane id="ProjectPane">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="untitled104" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="untitled104" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="untitled104" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="untitled104" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="untitled104" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="company" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
</panes>
</component>
<component name="ProjectViewState">
<option name="autoscrollFromSource" value="true" />
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="go.formatter.settings.were.checked" value="true" />
<property name="go.import.settings.migrated" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/src/com/pattern" />
<property name="settings.editor.selected.configurable" value="editor.preferences.import" />
<property name="typescript.add.unambiguous.imports.on.the.fly" value="true" />
<property name="vue.rearranger.settings.migration" value="true" />
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="E:\chen\patterns\src\com\pattern" />
<recent name="E:\chen\patterns\src\com\pattern\demo\materials" />
<recent name="E:\chen\patterns\src\com\pattern\demo\examples" />
<recent name="E:\chen\patterns\src\com\pattern\FactoryPattern\AbstractFactory\materials" />
<recent name="E:\chen\patterns\src\com\pattern\FactoryPattern\AbstractFactory" />
</key>
<key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
<recent name="com.pattern.demo" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="com.pattern.ProxyPattern.materials.po" />
<recent name="com.pattern.TemplatePattern.materials.po" />
<recent name="com.pattern.SingletonPattern.materials" />
<recent name="com.pattern.FactoryPattern.AbstractFactory.materials.factory" />
<recent name="com.pattern.FactoryPattern.FunctionFactory.materials.factory" />
</key>
</component>
<component name="RunManager" selected="Application.PatternApplication">
<configuration name="PatternApplication" type="Application" factoryName="Application" temporary="true">
<option name="MAIN_CLASS_NAME" value="com.pattern.PatternApplication" />
<module name="patterns" />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Run" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="generated-requests#2" type="HttpClient.HttpRequestRunConfigurationType" factoryName="HTTP Request" temporary="true" path="$APPLICATION_CONFIG_DIR$/scratches/generated-requests.http" index="2" runType="Run single request">
<method v="2" />
</configuration>
<list>
<item itemvalue="Application.PatternApplication" />
<item itemvalue="HTTP Request.generated-requests#2" />
</list>
<recent_temporary>
<list>
<item itemvalue="Application.PatternApplication" />
<item itemvalue="HTTP Request.generated-requests#2" />
</list>
</recent_temporary>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="e43e9168-5945-4f45-b4c2-1b6410d1eef8" name="Changes" comment="" />
<created>1634023392076</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1634023392076</updated>
<workItem from="1634023393246" duration="1045000" />
<workItem from="1634026286938" duration="1220000" />
<workItem from="1634085227295" duration="1967000" />
<workItem from="1634087918450" duration="3646000" />
<workItem from="1634091679401" duration="1323000" />
<workItem from="1634093719115" duration="14778000" />
<workItem from="1634115899707" duration="377000" />
<workItem from="1634180031509" duration="3704000" />
<workItem from="1636338443252" duration="4865000" />
<workItem from="1636350581794" duration="2679000" />
<workItem from="1637721077456" duration="1739000" />
</task>
<task id="LOCAL-00001" summary="增加策略模式案例&#10;Signed-off-by: chenjianqiang &lt;wushanxi@gmail.com&gt;">
<created>1634096220780</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1634096220780</updated>
</task>
<option name="localTasksCounter" value="2" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State />
</value>
</entry>
</map>
</option>
<option name="oldMeFiltersMigrated" value="true" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="增加策略模式案例&#10;Signed-off-by: chenjianqiang &lt;wushanxi@gmail.com&gt;" />
<option name="LAST_COMMIT_MESSAGE" value="增加策略模式案例&#10;Signed-off-by: chenjianqiang &lt;wushanxi@gmail.com&gt;" />
</component>
<component name="XSLT-Support.FileAssociations.UIState">
<expand />
<select />
</component>
</project>
\ No newline at end of file
package com.pattern.AdapterPattern.materials;
import com.pattern.AdapterPattern.materials.po.AudioAdapter;
import com.pattern.AdapterPattern.materials.po.MediaAdapter;
import com.pattern.AdapterPattern.materials.po.MediaPlayer;
/**
* @author lx
* @date 2021/11/24 13:20
**/
public class AdapterMain {
public void main() {
//原有的
MediaPlayer m = new MediaAdapter();
m.play("music","两只蝙蝠.mp3");
m.play("docx","富婆通讯录.docx");
//拓展的
MediaPlayer a = new AudioAdapter();
a.play("music","两只蝙蝠.mp3");
a.play("docx","富婆通讯录.docx");
}
}
package com.pattern.AdapterPattern.materials.po;
/**
* 功能实现
*
* @author lx
*/
public class AdvancedMediaAdapt implements AdvancedMediaPlayer{
/**
* 播放音乐
*
* @param fileName 文件名称
*/
@Override
public void playMusic(String fileName) {
System.out.println("正在播放的音乐名字叫做:" + fileName);
}
/**
* 播放视频
*
* @param fileName 文件名称
*/
@Override
public void playVideo(String fileName) {
System.out.println("正在播放的视频名字叫做:" + fileName);
}
}
package com.pattern.AdapterPattern.materials.po;
/**
* 功能抽象
*
* @author lx
*/
public interface AdvancedMediaPlayer {
/**
* 播放音乐
*
* @param fileName 文件名称
*/
void playMusic(String fileName);
/**
* 播放视频
*
* @param fileName 文件名称
*/
void playVideo(String fileName);
}
package com.pattern.AdapterPattern.materials.po;
/**
* 扩宽功能
* @author lx
* @date 2021/11/24 13:24
**/
public class AudioAdapter implements MediaPlayer {
/**
* 运行
*
* @param audioType 类型
* @param fileName 文件名称
*/
@Override
public void play(String audioType, String fileName) {
AdvancedMediaPlayer advancedMusicPlayer = new AdvancedMediaAdapt();
if (audioType.equals("music") || audioType.equals("video")) {
MediaAdapter mediaAdapter = new MediaAdapter();
mediaAdapter.play(audioType,fileName);
}else if(audioType.equals("docx")){
System.out.println("docx 文件类型");
}else{
System.out.println("不支持的类型");
}
}
}
package com.pattern.AdapterPattern.materials.po;
/**
*实现了基础功能
* @author lx
* @date 2021/11/24 13:24
**/
public class MediaAdapter implements MediaPlayer {
/**
* 运行
*
* @param audioType 类型
* @param fileName 文件名称
*/
@Override
public void play(String audioType, String fileName) {
AdvancedMediaPlayer advancedMusicPlayer = new AdvancedMediaAdapt();
if (audioType.equals("music")) {
advancedMusicPlayer.playMusic(fileName);
} else if (audioType.equals("video")) {
advancedMusicPlayer.playVideo(fileName);
}else{
System.out.println("不支持的类型");
}
}
}
package com.pattern.AdapterPattern.materials.po;
/**
* 播放器
* @author lx
* @date 2021/11/24 13:20
**/
public interface MediaPlayer {
/**
* 运行
* @param audioType 类型
* @param fileName 文件名称
*/
void play(String audioType, String fileName);
}
......@@ -8,7 +8,7 @@ public class PatternApplication {
public static void main(String[] args) {
/*
解释器模式
1.解释器模式
new InterpreterMain().main();
2021-10-14:制作多个计算规则,用这些规则去拼装组合来实现某些需求
2021-11-24:一个接口很多实例的类,其中一个类是终端计算规则,剩下的类传入一个或多个终端计算,并把每一个终端计算结果再进行计算,成为一个单独的计算规则
......@@ -17,7 +17,7 @@ public class PatternApplication {
/*
策略模式
2.策略模式
new StrategyMain().main();
2021-10-14:通过构造context传入不同的规则,再给context执行方法传入不同的值进行不同的计算
2021-11-24:context作为触发器,传进来不同的策略,然后执行策略里面的方法
......@@ -26,7 +26,7 @@ public class PatternApplication {
/*
工厂模式 -- 简单工厂
3.工厂模式 -- 简单工厂
new SimpleFactoryMain().main();
2021-10-14:通过factory区分你确切需要的类,返回该类,执行内涵的方法
......@@ -35,7 +35,7 @@ public class PatternApplication {
/*
工厂模式 -- 方法工厂
3.工厂模式 -- 方法工厂
new FunctionFactoryMain().main();
2021-10-14: 一个工厂只能造一种产品,也就是一个方法工厂返回一个对象,想要多个对象就要多个工厂
......@@ -44,7 +44,7 @@ public class PatternApplication {
/*
工厂模式 -- 抽象工厂
3.工厂模式 -- 抽象工厂
new AbstractFactoryMain().main();
2021-10-14: 把工厂抽象,实例化一个工厂定义多个对象的产出,然后实例化这个工厂就可以拿到多个产品
......@@ -52,7 +52,7 @@ public class PatternApplication {
/*
单例模式
4.单例模式
new SingleMain().main();
2021-10-14:
......@@ -61,7 +61,7 @@ public class PatternApplication {
/*
模板模式
5.模板模式
new TemplateMain().main();
2021-10-14:
......@@ -70,13 +70,39 @@ public class PatternApplication {
/*
代理模式 ---动态代理
6.代理模式 ---动态代理
new ProxyMain().reflectMain();
代理模式 ---静态代理
new ProxyMain().staticMain();
2021-10-14:
*/
/*
7.适配器模式
new AdapterMain().main();
2021-11-24:
*/
/*
8.适配器模式
new AdapterMain().main();
2021-11-24:
*/
/*
9.桥接模式
new AdapterMain().main();
2021-11-24:
*/
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册