设计模式Day01
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo6;//定义小汽车接口public interface ICar { //由于工厂模式仅关系对象的创建,为说明方便,无需定义方法} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo6;//高档小汽车public class TopCar implements ICar {} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo6;//中档小汽车public class MidCar implements ICar {} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo6;//低档小汽车public class LowCar implements ICar {} |
[代码]java代码:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
package com.example.demo6;//简单工厂public class CarSimpleFactory { public static final String TOPTYPE="toptype"; public static final String MIDTYPE="midtype"; public static final String LOWTYPE="lowtype"; public static ICar create(String mark){ ICar obj=null; if(mark.equals(TOPTYPE)){ //如果是高档类型 obj=new TopCar(); //则创建高档车对象 }else if(mark.equals(MIDTYPE)){ obj=new MidCar(); }else if(mark.equals(LOWTYPE)){ obj=new LowCar(); } return obj; //返回选择的对象 }} |
[代码]java代码:
|
1
2
3
4
5
6
7
8
|
package com.example.demo6;//测试程序public class CarTest { public static void main(String[] args) { //从工厂中创建对象 ICar obj=CarSimpleFactory.create("toptype"); }} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo8;//定义小汽车接口public interface ICar {} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo8;//高档小汽车public class TopCar implements ICar {} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo8;//中档小汽车public class MidCar implements ICar {} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo8;//低档小汽车public class LowCar implements ICar {} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo8;//定义抽象工厂public abstract class AbstractFactory { public abstract ICar create();} |
[代码]java代
|
01
02
03
04
05
06
07
08
09
10
|
package com.example.demo8;//定义高档小汽车工厂public class TopFactory extends AbstractFactory { @Override public ICar create() { return new TopCar();//高档工厂生成高档小气车对象 }} |
[代码]java代码:
|
01
02
03
04
05
06
07
08
09
10
|
package com.example.demo8;//定义中档小汽车工厂public class MidFactory extends AbstractFactory { @Override public ICar create() { return new LowCar();//低档工厂生成低档小汽车对象 }} |
[代码]java代码:
|
01
02
03
04
05
06
07
08
09
10
|
package com.example.demo8;//定义低档小汽车工厂public class LowFactory extends AbstractFactory { @Override public ICar create() { return new MidCar();//低档工厂生成中档小汽车 }} |
[代码]java代码:
|
1
2
3
4
5
6
7
8
|
package com.example.demo8;//测试类public class CarTest { public static void main(String[] args) { AbstractFactory obj=new TopFactory();//多态创建高档工厂 ICar car=obj.create(); //获得高档工厂中的小汽车对象 }} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义小汽车接口public interface ICar {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义高档小汽车类public class TopCar implements ICar {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义中档小汽车类public class MidCar implements ICar {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义低档小汽车类public class LowCar implements ICar {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义公共汽车接口public interface IBus {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义高档公共汽车类public class UpBus implements IBus {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义中档公共汽车类public class MidBus implements IBus {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义低档公共汽车类public class DnBus implements IBus {} |
[代码]java代码:
|
1
2
3
4
5
6
|
package com.example.demo9;//定义抽象工厂public abstract class AbstractFactory { public abstract ICar createCar();//产生小汽车对象 public abstract IBus createBus();//产生公共汽车对象} |
[代码]java代码:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
package com.example.demo9;//定义高档工厂public class TopFactory extends AbstractFactory { @Override public ICar createCar() { return new TopCar();//高档工厂生成高档小汽车对象 } @Override public IBus createBus() { return new UpBus();//高档工厂生成高档公共汽车对象 }} |
[代码]java代码:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
package com.example.demo9;//定义中档工厂public class MidFactory extends AbstractFactory { @Override public ICar createCar() { return new MidCar();//中档工厂生成中档小汽车 } @Override public IBus createBus() { return new MidBus();//中档工厂生成中档公共汽车 }} |
[代码]java代码:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
package com.example.demo9;//定义低档工厂public class LowFactory extends AbstractFactory { @Override public ICar createCar() { return new LowCar();//低档工厂生成低档小汽车对象 } @Override public IBus createBus() { return new DnBus();//低档工厂生成低档公共汽车对象 }} |
设计模式Day01的更多相关文章
- MVVM设计模式和WPF中的实现(四)事件绑定
MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- java EE设计模式简介
1.何为设计模式 设计模式提供了对常见应用设计问题的解决方案.在面向对象的编程中,设计模式通常在解决与对象创建和交互相关的问题,而非整体软件架构所面对的大规模问题,它们以样板代码的形式提供了通用的解决 ...
- 计算机程序的思维逻辑 (54) - 剖析Collections - 设计模式
上节我们提到,类Collections中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了第一类,本节我们介绍第二类. 第二类方法大概可以分为两组: 接受其他 ...
- 《JavaScript设计模式 张》整理
最近在研读另外一本关于设计模式的书<JavaScript设计模式>,这本书中描述了更多的设计模式. 一.创建型设计模式 包括简单工厂.工厂方法.抽象工厂.建造者.原型和单例模式. 1)简单 ...
- 《JavaScript设计模式与开发实践》整理
最近在研读一本书<JavaScript设计模式与开发实践>,进阶用的. 一.高阶函数 高阶函数是指至少满足下列条件之一的函数. 1. 函数可以作为参数被传递. 2. 函数可以作为返回值输出 ...
- 设计模式之行为类模式大PK
行为类模式大PK 行为类模式包括责任链模式.命令模式.解释器模式.迭代器模式.中介者模式.备忘录模式.观察者模式.状态模式.策略 ...
- .NET设计模式访问者模式
一.访问者模式的定义: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. 二.访问者模式的结构和角色: 1.Visitor 抽象访问者角色,为该 ...
- Java开发中的23种设计模式详解
[放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...
- java 设计模式
目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计 ...
随机推荐
- Perl内置变量速查表
[ 文件句柄 ] $| 如果非零, 则在对当前选定的文件执行写或打印操作后强制清除缓冲区 $% 当前选中文件句柄的当前页码 $= 当前选中文件句柄的当前页面长度 $- 当前选中文件句柄的页面剩余长度 ...
- PDF ITextSharp
示例源码 //Document:(文档)生成pdf必备的一个对象,生成一个Document示例 Document document = new Document(PageSize.A4, 30, 30 ...
- UltraEdit 列模式
使用UltraEdit 列模式 1 进入UltraEdit列模式 a) 通过快捷方式 Alt +c b) UltraEdit --> Column Mode
- [译] ASP.NET 生命周期 – ASP.NET 请求生命周期(二)
ASP.NET 请求生命周期 全局应用类也可以用来跟踪每个独立请求的生命周期,包括请求从 ASP.NET 平台传递到 MVC 框架.ASP.NET 框架会创建一个定义在 Global.asax 文件中 ...
- JavaScript中常谈的对象
为浏览器编写代码时,总少不了window对象 window对象表示JavaScript程序的全局环境 同时 也表示应用的主窗口 到处都是对象 window对象 常用的属性和方法介绍 location ...
- Buffer
Buffer 我们用原有 IO 读写文件应该不会陌生了,顺带回顾一下,大致两种: 1. 在 InputStream 或 OutputStream 上读写字节或字节数组,读 InputStream 时用 ...
- Notepad++ 右键菜单自定义配置
问:想在右键菜单里面多加几个功能,怎么加,比如区块注释 答:其实notepad++的配置文件存放路径不在自己的软件路径,而存在于 xp:C:\Documents and Settings\Admini ...
- <span> <div> 局部 keydown ,keyup事件。页面部分div $(document) 无效,可能焦点,添加焦点。
前天改一个bug, js 实现的一个 面板拖拉,左右各两个列表,中间面板画线连接,页面左侧列表选中后,key 事件无效.右侧选中确有效,很奇怪,查看源码,左侧选中后,$(document).on(&q ...
- POJ2526+简单几何
题意:给定的这些点是否有一个对称中心. PS:我写得有点啰嗦.. 就是把小的x和大的x进行匹配. #include<stdio.h> #include<algorithm> # ...
- Tarjan+模板
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> #in ...