当前位置: 首页 > news >正文

哈尔滨建站模板搭建广告公司简介

哈尔滨建站模板搭建,广告公司简介,不属于网络营销的特点,做互联网的网站模式通常被一起使用,并被组合在同一个解决方案中。 复合模式在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题。 首先重新构建鸭子模拟器: package headfirst.designpatterns.combining.ducks;public interface Quackable …

模式通常被一起使用,并被组合在同一个解决方案中。

复合模式在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题。

首先重新构建鸭子模拟器:

package headfirst.designpatterns.combining.ducks;public interface Quackable {public void quack();
}public class MallardDuck implements Quackable {public void quack() {System.out.println("Quack");}
}public class RubberDuck implements Quackable {public void quack() {System.out.println("Squeak");}
}
package headfirst.designpatterns.combining.ducks;public class DuckSimulator {public static void main(String[] args) {DuckSimulator simulator = new DuckSimulator();simulator.simulate();}void simulate() {Quackable mallardDuck = new MallardDuck();Quackable redheadDuck = new RedheadDuck();Quackable duckCall = new DuckCall();Quackable rubberDuck = new RubberDuck();System.out.println("\nDuck Simulator");simulate(mallardDuck);simulate(redheadDuck);simulate(duckCall);simulate(rubberDuck);}void simulate(Quackable duck) {duck.quack();}
}

需求1,有鸭子的地方大概率就会有鹅,怎样在模拟器使用鹅呢?适配器

package headfirst.designpatterns.combining.adapter;public class Goose {public void honk() {System.out.println("Honk");}
}
package headfirst.designpatterns.combining.adapter;public class GooseAdapter implements Quackable {Goose goose;public GooseAdapter(Goose goose) {this.goose = goose;}public void quack() {goose.honk();}public String toString() {return "Goose pretending to be a Duck";}
}

需求2,如果在不变化鸭子类的情况下,计算呱呱叫的次数呢?装饰者

将鸭子包装进装饰者对象,赋予鸭子一些新行为。

package headfirst.designpatterns.combining.decorator;public class QuackCounter implements Quackable {Quackable duck;static int numberOfQuacks;public QuackCounter (Quackable duck) {this.duck = duck;}public void quack() {duck.quack();numberOfQuacks++;}public static int getQuacks() {return numberOfQuacks;}public String toString() {return duck.toString();}
}
// 更新模拟器Quackable mallardDuck = new QuackCounter(new MallardDuck());

需求3,有时候我们在代码中可能搞忘装饰对象,所以我们希望在最开始创建的时候就确保鸭子是被装饰过的:工厂模式

package headfirst.designpatterns.combining.factory;public abstract class AbstractDuckFactory {public abstract Quackable createMallardDuck();public abstract Quackable createRedheadDuck();public abstract Quackable createDuckCall();public abstract Quackable createRubberDuck();
}
package headfirst.designpatterns.combining.factory;public class CountingDuckFactory extends AbstractDuckFactory {public Quackable createMallardDuck() {return new QuackCounter(new MallardDuck());}public Quackable createRedheadDuck() {return new QuackCounter(new RedheadDuck());}public Quackable createDuckCall() {return new QuackCounter(new DuckCall());}public Quackable createRubberDuck() {return new QuackCounter(new RubberDuck());}
}

抽象工厂通过传入不同的工厂到创建方法中,得到不同的产品家族。

package headfirst.designpatterns.combining.factory;public class DuckSimulator {public static void main(String[] args) {DuckSimulator simulator = new DuckSimulator();AbstractDuckFactory duckFactory = new CountingDuckFactory();simulator.simulate(duckFactory);}void simulate(AbstractDuckFactory duckFactory) {Quackable mallardDuck = duckFactory.createMallardDuck();Quackable redheadDuck = duckFactory.createRedheadDuck();Quackable duckCall = duckFactory.createDuckCall();Quackable rubberDuck = duckFactory.createRubberDuck();Quackable gooseDuck = new GooseAdapter(new Goose());System.out.println("\nDuck Simulator: With Abstract Factory");simulate(mallardDuck);simulate(redheadDuck);simulate(duckCall);simulate(rubberDuck);simulate(gooseDuck);System.out.println("The ducks quacked " + QuackCounter.getQuacks() + " times");}void simulate(Quackable duck) {duck.quack();}
}

需求4,同时管理一群鸭子:组合模式

package headfirst.designpatterns.combining.composite;import java.util.Iterator;
import java.util.ArrayList;public class Flock implements Quackable {ArrayList<Quackable> quackers = new ArrayList<Quackable>();public void add(Quackable quacker) {quackers.add(quacker);}public void quack() {Iterator<Quackable> iterator = quackers.iterator();while (iterator.hasNext()) {Quackable quacker = iterator.next();quacker.quack();}}public String toString() {return "Flock of Quackers";}
}
package headfirst.designpatterns.combining.composite;public class DuckSimulator {public static void main(String[] args) {DuckSimulator simulator = new DuckSimulator();AbstractDuckFactory duckFactory = new CountingDuckFactory();simulator.simulate(duckFactory);}void simulate(AbstractDuckFactory duckFactory) {Quackable redheadDuck = duckFactory.createRedheadDuck();Quackable duckCall = duckFactory.createDuckCall();Quackable rubberDuck = duckFactory.createRubberDuck();Quackable gooseDuck = new GooseAdapter(new Goose());System.out.println("\nDuck Simulator: With Composite - Flocks");Flock flockOfDucks = new Flock();flockOfDucks.add(redheadDuck);flockOfDucks.add(duckCall);flockOfDucks.add(rubberDuck);flockOfDucks.add(gooseDuck);Flock flockOfMallards = new Flock();Quackable mallardOne = duckFactory.createMallardDuck();Quackable mallardTwo = duckFactory.createMallardDuck();Quackable mallardThree = duckFactory.createMallardDuck();Quackable mallardFour = duckFactory.createMallardDuck();flockOfMallards.add(mallardOne);flockOfMallards.add(mallardTwo);flockOfMallards.add(mallardThree);flockOfMallards.add(mallardFour);flockOfDucks.add(flockOfMallards);System.out.println("\nDuck Simulator: Whole Flock Simulation");simulate(flockOfDucks);System.out.println("\nDuck Simulator: Mallard Flock Simulation");simulate(flockOfMallards);System.out.println("\nThe ducks quacked " + QuackCounter.getQuacks() + " times");}void simulate(Quackable duck) {duck.quack();}
}

需求5,持续追踪个别鸭子的实时呱呱叫:观察者模式

package headfirst.designpatterns.combining.observer;public interface QuackObservable {public void registerObserver(Observer observer);public void notifyObservers();
}public interface Quackable extends QuackObservable {public void quack();
}

现在需要保证Quackable的具体类都能扮演QuackObservable角色(在具体类中添加一个arraylist变量,然后实现接口方法)。但这里用的不同的做法(不知道为什么),在Observable类中封装注册和通知的代码,然后将其和具体类组合在一起。

package headfirst.designpatterns.combining.observer;import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;public class Observable implements QuackObservable {List<Observer> observers = new ArrayList<Observer>();QuackObservable duck;public Observable(QuackObservable duck) {this.duck = duck;}public void registerObserver(Observer observer) {observers.add(observer);}public void notifyObservers() {Iterator<Observer> iterator = observers.iterator();while (iterator.hasNext()) {Observer observer = iterator.next();observer.update(duck);}}public Iterator<Observer> getObservers() {return observers.iterator();}
}
package headfirst.designpatterns.combining.observer;public class MallardDuck implements Quackable {Observable observable;public MallardDuck() {observable = new Observable(this);}public void quack() {System.out.println("Quack");notifyObservers();}public void registerObserver(Observer observer) {observable.registerObserver(observer);}public void notifyObservers() {observable.notifyObservers();}public String toString() {return "Mallard Duck";}
}

------------------------------------------------------------------------------------

http://www.hrbkazy.com/news/13454.html

相关文章:

  • 用苹果手机做网站搜索引擎排名2021
  • 个人网站建设方案书seo实战视频
  • 做返利网站能赚钱的网络营销策略有哪五种
  • 北京网站开发一般多少钱谷歌商店安卓版下载
  • 中国住房与城乡建设部网站西安疫情最新消息1小时内
  • 动态网站技术百度问一问在线咨询客服
  • 海城做网站公司哈尔滨最新疫情通报
  • 五合一网站建设方案app推广代理加盟
  • 江门外贸网站建设百度搜索引擎api
  • 网站后台超链接怎么做西安seo服务公司排名
  • 网站网络推广优化网站软件下载
  • 宁波建网站费用网站建设一条龙
  • 合肥装修公司哪家口碑最好天津seo排名费用
  • 济宁住房和城乡建设厅网站首页2022最新国际新闻10条简短
  • 2018年网站开发语言排行信息流优化
  • 什么网站可以做软件有哪些东西湖南百度seo
  • 亚马逊做品牌备案自有网站必应搜索引擎网址
  • 做棋牌网站建设多少钱口碑营销案例2021
  • 本地网站建设视频教程sem竞价是什么
  • 网站里的专题页面网络服务中心
  • 北京网站制作排名优化网站服务
  • 学校网站群建设方案北京seo培训
  • 用ssh做网站百度系app
  • 建一个网站做cpa联盟莆田百度快照优化
  • 网站开发应该怎么做自媒体引流推广
  • 哪里做网站比较好站外seo推广
  • 武汉大型互联网公司seo管理是什么
  • 微信小程序开发者济南优化网络营销
  • 专做logo网站叫什么地方潍坊疫情最新消息
  • 自己有网站怎么做点卡全球十大网站排名