`
- 浏览:
110823 次
- 性别:
- 来自:
长沙
-
命令模式
命令模式是对命令的封装,命令模式把发出命令的责任和执行命令的责任分隔开、委派给不同的对象。
命令模式允许请求的一方和接收的一方独立开来、使得请求的一方无需接收请求的一方的接口。
每一个命令都是一个操作、命令类中通常只会有一个方法,请求的一方发出请求要求执行一个操作、接收的一方收到请求并执行操作;两者分开互不影响。
//先定义一个类、类中有两个方法。这个类负责接收命令的请求。
Public class Receiver{
Public void startup(){
//启动
}
Public void close(){
//关闭
}
}
再定义一个命令接口:
Public interface Command{
Public void actionPerformed();
}
然后实现此接口
Public class StartupCommand implements Commend{
Receiver rece;
Public StartupCommand(Receiver rece){
This.rece= rece;
}
Public void actionPerformed(){
Rece.startup();
}
}
startupCommand调用了Receiver类中的startup方法、把具体的请求交给了Receiver类中的startup方法处理
ShutdownCommand类也同样实现了Command接口、代表一个具体的关闭请求。
Public class ShutDownCommand implements Command{
Receiver rece;
Public shutdownCommand(Receiver rece){
This.rece = rece;
}
Public void actionPerformend(){
Rece.close();
}
}
最后客户端调用代码:
Public class Client{
Public void test(){
Receiver rece = new Receiver();
Command cmd = new StartupCommand(rece);
Cmd.actionPerformed();
}
}
观察者模式
我们在生活中会发生这样的情况、当商品信息发生变化时,需要通知每一个客户;而这种通知是自动发生的、就好像客户始终在监听产品一样,这就需要在产品中添加观察者这样的角色;以便客户端的产品发生变化、观察者能自动观察到这种变化;并能及时的进行update和notify动作,这就是观察者模式
Java的API中提供了两个类,Observable 提供公开的方法支持观察者对象;另一是Observer
被观察者类product、里面定义两个属性;
Public class product extends Observable{
String name;
String price;
Public String getName(){
Return name;
}
Public void setName(String name){
This.name= name;
this.setChanged();
//通知观察者对象
this.notifyObservers();
}
Public String getPrice(){
Return price;
}
Public void setPrice(String price){
This.price = price;
this.setChanged();
//通知观察者
this.notifyObservers(price);
}
}
在product类中、当发生对name属性和price属性的改变时、使用了Observable中的方法setChanger()、用来在被观察者内部设置一个修饰标记;使用notifyObservers()方法向观察者通知这一变化。
接着、我们定义两个观察者类,分别为productNameObserver和ProductPriceObserver;这两个类都实现了Observer接口。这个接口中只定义了一个update()方法、当被观察者对象的对象发生变化时,被观察者对象的notifyObservers()方法会自动调用这一方法。
Public class productNameObserver implements Observer{
Public void update(Observer obsv,Object obj){
//修改产品
}
}
Public class productpriceObserver implements Observer{
Public void update(Observer obsv,Object obj){
//修改价格
}
}
最后调用:
Public class Client{
Public void test(){
Product product =new Product();
product.addObserver(new ProductNameObserver());
product.addObserver(new ProductprictObserver());
product.setName(“名字要发生改变”);
product.setPrict(“价格要变”);
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计...
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
章节介绍:1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之...
C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计...
设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式 设计模式精解设计模式精解设计模式精解...
head first 设计模式
head first 设计模式
24中设计模式 混合设计模式 设计模式实际应用案例 费了很多时间和精力整理的
C# 设计模式.pdf 文档。无论您是新手,还是老手,本教程都值得一读。对于那些具有丰富的开发经验的开发人员,学习设计模式有助于了解在软件开发过程中所面临的问题的最佳解决方案;对于那些经验不足的开发人员,学习...
设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式
DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式
设计模式 四人帮设计模式。比较经典的设计模式。
学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料
DAO设计模式 DAO 设计模式 JAVA设计模
人人都懂设计模式 人人都懂设计模式
设计模式,分布式设计模式,Java设计模式,软件设计模式
您的设计模式我们的设计模式,简单明了的设计模式是设计模式学习必备的书籍
java设计模式,java设计模式,java设计模式,java设计模式,java设计模式,java设计模式,java设计模式,java设计模式,
设计模式02 设计模式03-创建型模式 设计模式04-创建型模式2 设计模式05-建造者、原型模式 设计模式06-适配器、桥接、组合模式 设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、...
c#设计模式-C#设计模式c#设计模式-C#设计模式c#设计模式-C#设计模式c#设计模式-C#设计模式