java 23 种设计模式 07装饰模式
2017-11-26 14:09
330 查看
java 23 种设计模式 07装饰模式
一、什么是装饰模式装饰( Decorator )模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,
是继承关系的一个替换方案。
二、装饰模式的结构
三、装饰模式的角色和职责
抽象组件角色: 一个抽象接口,是被装饰类和装饰类的父接口。具体组件角色:为抽象组件的实现。
抽象装饰角色:包含一个组件的引用,并定义了与抽象组件一致的接口。
具体装饰角色:为抽象装饰角色的实现类。负责具体的装饰。
代码下载:链接:百度云密码:puht
代码:
包1:
public interface Car { public void show(); public void run(); } public class FlyCar implements Car { public void show() { this.run(); this.fly(); } public void run() { System.out.println("可以跑"); } public void fly() { System.out.println("可以飞"); } } public class RunCar implements Car { public void run() { System.out.println("可以跑"); } public void show() { this.run(); } } public class SwimCar implements Car{ public void run() { System.out.println("可以跑"); } public void Swim() { System.out.println("可以游"); } public void show() { this.run(); this.Swim(); } } public class MainClass { public static void main(String[] args) { Car flycar = new SwimCar(); flycar.show(); } }
包2:升级
package com.ibeifeng.news; public interface Car { public void show(); public void run(); } package com.ibeifeng.news; public class FlyCarDecorator extends CarDecorator{ public FlyCarDecorator(Car car) { super(car); } public void show() { this.getCar().show(); this.fly(); } public void fly() { System.out.println("可以飞"); } public void run() { } } package com.ibeifeng.news; public class RunCar implements Car { public void run() { System.out.println("可以跑"); } public void show() { this.run(); } } package com.ibeifeng.news; public class SwimCarDecorator extends CarDecorator { public SwimCarDecorator(Car car) { super(car); } public void show() { this.getCar().show(); this.swim(); } publ 4000 ic void swim() { System.out.println("可以游"); } public void run() { } } package com.ibeifeng.news; public class MainClass { public static void main(String[] args) { Car car = new RunCar(); car.show(); System.out.println("---------"); Car swimcar = new SwimCarDecorator(car); swimcar.show(); System.out.println("---------"); Car flySwimCar = new FlyCarDecorator(swimcar); flySwimCar.show(); } } package com.ibeifeng.news; public abstract class CarDecorator implements Car{ private Car car; public Car getCar() { return car; } public void setCar(Car car) { this.car = car; } public CarDecorator(Car car) { this.car = car; } public abstract void show(); }
更新中。。。。
相关文章推荐
- Java常用的设计模式07:常用设计模式之装饰器模式(结构型模式)
- JAVA设计模式-07-装饰模式
- 【GOF23设计模式】_装饰模式_IO流底层架构_装饰和桥接模式的区别JAVA240
- 装饰设计模式 Java版
- Java设计模式(7)装饰模式(Decorator模式)
- Java设计模式百例 - 装饰器模式
- JAVA IO之装饰器模式(Head first 设计模式之装饰器模式)
- Java设计模式-装饰模式
- JAVA设计模式之 装饰模式【Decorator Pattern】
- Java基础21--IO流--装饰设计模式--缓冲流
- Java 设计模式 --装饰模式
- java/android 设计模式学习笔记(23)---解释器模式
- Java基础---Java---IO流-----BufferedReader、BufferedWriter、缓冲区、装饰设计模式及和继承的区别
- Java设计模式_(结构型)_装饰模式
- java设计模式之装饰器模式
- Java 装饰设计模式
- java23中设计模式——结构模式——Facade(外观 )
- java IO包 与 装饰设计模式 浅谈
- JAVA设计模式之装饰模式
- java设计模式---------装饰模式