设计模式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):迪米特法则 设计 ...
随机推荐
- Oracle SQL的硬解析、软解析、软软解析
Oracle中每条sql在执行前都要解析,解析分为硬解析.软解析.软软解析. Oracle会缓存DML语句,相同的DML语句会进行软解析.但不会缓存DDL语句,所以DDL每次都做硬解析.硬解析是一个很 ...
- 经典好文:android和iOS平台的崩溃捕获和收集
通过崩溃捕获和收集,可以收集到已发布应用(游戏)的异常,以便开发人员发现和修改bug,对于提高软件质量有着极大的帮助.本文介绍了iOS和android平台下崩溃捕获和收集的原理及步骤,不过如果是个人开 ...
- UIImageView加抖动效果(转)
CGAffineTransform moveRight = CGAffineTransformTranslate(CGAffineTransformIdentity, 20, 0); CGAffine ...
- python解决汉诺塔问题
今天刚刚在博客园安家,不知道写点什么,前两天刚刚学习完python 所以就用python写了一下汉诺塔算法,感觉还行拿出来分享一下 首先看一下描述: from :http://baike.baidu. ...
- 一种高斯模糊渐变动画的实现-b
关于高斯模糊的方式有很多种,但是如果需要模糊渐变,那么对这种高斯模糊算法的性能要求是比较高的,今天这里重点不讨论算法,只是提供一个动画实现的思路.动画效果如下: 高斯模糊渐变动画 //高斯模糊 -(U ...
- 第二好用的时间日期选择插件(jscal)
这个是第二好用的了,支持鼠标滚动选择时间.功能很强大,文档:http://www.dynarch.com/jscal/ 效果图: <!DOCTYPE html PUBLIC ...
- [转]struct实例字段的内存布局(Layout)和大小(Size)
在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局(Layout)顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Alig ...
- printf在终端输出时改变颜色
在调试程序时,有时候要输出大量数据,如果让printf/fprintf改变输出数据的颜色,那观察数据就方便多了. 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关.转义序 ...
- android 安全需要关注
1.通过签名校验保护,能有效避免应用被二次打包,杜绝盗版应用的产生2.对内存数据进行变换处理和动态跟踪,有效防止数据被获取和修改3.对代码进行加密压缩,可防止破解者还原真实代码逻辑,避免被复制4.多重 ...
- rand5()产生rand7()
http://www.cnblogs.com/dwdxdy/archive/2012/07/28/2613135.html 利用rand5()产生rand7().rand5()产生1到5的整数,ran ...