package decorate;
public interface People
{
public void eat();
}
package decorate;
public class Girl implements People {
public void eat() {
System.out.println("吃点小米饭!");
}
}
package decorate;
public class PeopleDecorate implements People
{
private People people;
public PeopleDecorate(People people)
{
this.people = people;
}
public void eat()
{
this.before();//添加新功能
people.eat();
this.after();//添加新功能
}
public void before()
{
System.out.println("洗手!");
}
public void after()
{
System.out.println("洗碗,整理卫生!");
}
}
package decorate;
public class Test
{
public static void main(String[] args)
{
People g = new PeopleDecorate(new Girl());
g.eat();
}
}
/*
* 装饰模式主要是用来扩张一个类的功能的,在不修改这个类的情况下进行功能的添加
* 其实所有的设计模式基本就是为了去满足开发中一些原则,这里主要是开闭原则,面向接口
* 编程。
* 这里的girl要吃饭,如果要加上其他功能,不用模式的话就得去修改接口,在里面添加before,
* after等方法,这里就不利于维护与功能的扩展。
*
*/
分享到:
相关推荐
C#设计模式中的“装饰者(Decorate)”模式是一种结构型模式,它允许动态地给一个对象添加新的行为或职责,而不影响其它对象。装饰者模式的核心在于,它提供了向对象添加新功能而不使用继承的方法,从而避免了类爆炸...
"decorate-0.0.13-py3-none-any.whl" 是一个Python库的发行包,它专注于装饰器(Decorator)这一编程概念。 装饰器在Python中是一个强大的设计模式,允许我们在不修改原有代码的情况下,扩展或修改函数、方法或类的...
2. 支持环境:小书匠采用`markdown-it`的扩展插件`markdown-it-decorate`来实现此功能,因此在其他不支持此插件的markdown解析器中可能无法正常工作。 3. 参考资源:对于更详细的使用规则,可以查阅官方文档,如`...
标题中的"PyPI 官网下载 | decorate-1.0.1-py3-none-any.whl"表明我们讨论的是一个从Python Package Index (PyPI)官方渠道获取的软件包。PyPI是Python开发者发布和分享自己编写的第三方库的平台,用户可以通过它来...
《Decorate Editor Sharp:开源软件助力游戏开发》 在当今的数字时代,开源软件已经成为技术创新的重要推动力之一,尤其在游戏开发领域。"Decorate Editor Sharp"正是一款这样的开源工具,专为ZDoom游戏引擎的用户...
资源来自pypi官网。 资源全名:decorate-0.0.13-py3-none-any.whl
es-装饰 ... decorate = require ' es-decorate ' # Class decorator must be assigned to variable or property. Foo = decorate F ( ' color ' ), G, class # Class name is optional in CoffeeScript
装饰者模式是一种结构型设计模式,它允许在运行时向对象添加新的行为或职责,而无需修改对象本身。这种模式的核心思想是通过将对象包装在一个装饰类中来扩展功能,而不是通过继承。装饰者模式与代理模式有些相似,但...
这是一个用于Compojure的小型库,该库允许通过装饰器功能来增强定义的功能。 例如,这是一个日志装饰器函数: (defn wrap-logging [func desc] ... (decorate func & decorators) -将一个函数包装在一个或多
GraphQL装饰graphql-decorate添加了一个易于使用的界面来装饰类型。 它使您可以将逻辑从类型文件中移出并保持声明性。安装将此行添加到您的应用程序的Gemfile中: gem 'graphql-decorate' 然后执行: $ bundle或将其...
装饰:差分表观遗传相关检验 装饰:差分表观遗传相关检验 安装 library( devtools ) # first install sLED install_github( " lingxuez/sLED " ) ... install_github( ' GabrielHoffman/decorate ' , repos
react-decorate-props是一个,可以帮助您连接className ,合并style并转发其余的props。 在render()不再有const {className, style, ...others} = this.props 。 用法 // Instead of... class Foo extends React . ...
内容装订@bindString @bindTwoWay @bindOneWay @bindExpression @autoinject defaults Gotcha 备择方案 安装在外壳中: npm i --save-dev ng-decorate# orjspm install npm:ng-decorate 在应用程式中: import { ...
import { ngInject , ngController , ngService , ngModule } from 'angular-decorate' ; @ ngModule ( { name : 'demoApp' , dependencies : [ ] , inject : [ '$http' ] , configure : [ '$httpPr
8. **版本控制**:考虑到文件名为`lab-1.8.2-decorate-your-portfolio-main`,可能意味着项目使用了版本控制系统,如Git。学生应学习如何提交、推送和拉取代码更改。 通过这个实验室活动,学生不仅可以提升HTML编写...
decorate_left = decorate_top-center_y+center_x; decorate_top = center_x+center_y-index_x; index_x = decorate_right; decorate_right = decorate_bottom-center_y+center_x; decorate_bottom = ...
npm install react-redux-decorate 例子 import React from 'react' import { mapDispatchToProps , mapStateToProps } from 'react-redux-decorate' @ mapStateToProps ( ( state ) => ( { users : state . ...
装饰模式是一种结构型设计模式,它允许我们向一个对象添加新的功能或行为,而不改变其原有的类。在Java中,装饰模式通常通过继承和组合来实现。下面将详细讲解装饰模式的基本概念、工作原理以及如何在Java中进行实现...